Home | History | Annotate | Download | only in opcodes
      1 /* Instruction opcode table for iq2000.
      2 
      3 THIS FILE IS MACHINE GENERATED WITH CGEN.
      4 
      5 Copyright (C) 1996-2016 Free Software Foundation, Inc.
      6 
      7 This file is part of the GNU Binutils and/or GDB, the GNU debugger.
      8 
      9    This file is free software; you can redistribute it and/or modify
     10    it under the terms of the GNU General Public License as published by
     11    the Free Software Foundation; either version 3, or (at your option)
     12    any later version.
     13 
     14    It is distributed in the hope that it will be useful, but WITHOUT
     15    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
     16    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
     17    License for more details.
     18 
     19    You should have received a copy of the GNU General Public License along
     20    with this program; if not, write to the Free Software Foundation, Inc.,
     21    51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
     22 
     23 */
     24 
     25 #include "sysdep.h"
     26 #include "ansidecl.h"
     27 #include "bfd.h"
     28 #include "symcat.h"
     29 #include "iq2000-desc.h"
     30 #include "iq2000-opc.h"
     31 #include "libiberty.h"
     32 
     33 /* The hash functions are recorded here to help keep assembler code out of
     34    the disassembler and vice versa.  */
     35 
     36 static int asm_hash_insn_p        (const CGEN_INSN *);
     37 static unsigned int asm_hash_insn (const char *);
     38 static int dis_hash_insn_p        (const CGEN_INSN *);
     39 static unsigned int dis_hash_insn (const char *, CGEN_INSN_INT);
     40 
     41 /* Instruction formats.  */
     42 
     43 #define F(f) & iq2000_cgen_ifld_table[IQ2000_##f]
     44 static const CGEN_IFMT ifmt_empty ATTRIBUTE_UNUSED = {
     45   0, 0, 0x0, { { 0 } }
     46 };
     47 
     48 static const CGEN_IFMT ifmt_add2 ATTRIBUTE_UNUSED = {
     49   32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
     50 };
     51 
     52 static const CGEN_IFMT ifmt_add ATTRIBUTE_UNUSED = {
     53   32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
     54 };
     55 
     56 static const CGEN_IFMT ifmt_addi2 ATTRIBUTE_UNUSED = {
     57   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
     58 };
     59 
     60 static const CGEN_IFMT ifmt_addi ATTRIBUTE_UNUSED = {
     61   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
     62 };
     63 
     64 static const CGEN_IFMT ifmt_ram ATTRIBUTE_UNUSED = {
     65   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 } }
     66 };
     67 
     68 static const CGEN_IFMT ifmt_sll ATTRIBUTE_UNUSED = {
     69   32, 32, 0xffe0003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
     70 };
     71 
     72 static const CGEN_IFMT ifmt_sllv2 ATTRIBUTE_UNUSED = {
     73   32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
     74 };
     75 
     76 static const CGEN_IFMT ifmt_slmv2 ATTRIBUTE_UNUSED = {
     77   32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
     78 };
     79 
     80 static const CGEN_IFMT ifmt_slmv ATTRIBUTE_UNUSED = {
     81   32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
     82 };
     83 
     84 static const CGEN_IFMT ifmt_slti2 ATTRIBUTE_UNUSED = {
     85   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
     86 };
     87 
     88 static const CGEN_IFMT ifmt_slti ATTRIBUTE_UNUSED = {
     89   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
     90 };
     91 
     92 static const CGEN_IFMT ifmt_sra2 ATTRIBUTE_UNUSED = {
     93   32, 32, 0xffe0003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
     94 };
     95 
     96 static const CGEN_IFMT ifmt_bbi ATTRIBUTE_UNUSED = {
     97   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
     98 };
     99 
    100 static const CGEN_IFMT ifmt_bbv ATTRIBUTE_UNUSED = {
    101   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
    102 };
    103 
    104 static const CGEN_IFMT ifmt_bgez ATTRIBUTE_UNUSED = {
    105   32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
    106 };
    107 
    108 static const CGEN_IFMT ifmt_jalr ATTRIBUTE_UNUSED = {
    109   32, 32, 0xfc1f07ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
    110 };
    111 
    112 static const CGEN_IFMT ifmt_jr ATTRIBUTE_UNUSED = {
    113   32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
    114 };
    115 
    116 static const CGEN_IFMT ifmt_lb ATTRIBUTE_UNUSED = {
    117   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
    118 };
    119 
    120 static const CGEN_IFMT ifmt_lui ATTRIBUTE_UNUSED = {
    121   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
    122 };
    123 
    124 static const CGEN_IFMT ifmt_break ATTRIBUTE_UNUSED = {
    125   32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
    126 };
    127 
    128 static const CGEN_IFMT ifmt_syscall ATTRIBUTE_UNUSED = {
    129   32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_EXCODE) }, { F (F_FUNC) }, { 0 } }
    130 };
    131 
    132 static const CGEN_IFMT ifmt_andoui ATTRIBUTE_UNUSED = {
    133   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
    134 };
    135 
    136 static const CGEN_IFMT ifmt_andoui2 ATTRIBUTE_UNUSED = {
    137   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
    138 };
    139 
    140 static const CGEN_IFMT ifmt_mrgb ATTRIBUTE_UNUSED = {
    141   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 } }
    142 };
    143 
    144 static const CGEN_IFMT ifmt_mrgb2 ATTRIBUTE_UNUSED = {
    145   32, 32, 0xfc00043f, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_10) }, { F (F_MASK) }, { F (F_FUNC) }, { 0 } }
    146 };
    147 
    148 static const CGEN_IFMT ifmt_bc0f ATTRIBUTE_UNUSED = {
    149   32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
    150 };
    151 
    152 static const CGEN_IFMT ifmt_cfc0 ATTRIBUTE_UNUSED = {
    153   32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_10_11) }, { 0 } }
    154 };
    155 
    156 static const CGEN_IFMT ifmt_chkhdr ATTRIBUTE_UNUSED = {
    157   32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
    158 };
    159 
    160 static const CGEN_IFMT ifmt_lulck ATTRIBUTE_UNUSED = {
    161   32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
    162 };
    163 
    164 static const CGEN_IFMT ifmt_pkrlr1 ATTRIBUTE_UNUSED = {
    165   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_COUNT) }, { F (F_INDEX) }, { 0 } }
    166 };
    167 
    168 static const CGEN_IFMT ifmt_rfe ATTRIBUTE_UNUSED = {
    169   32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_25) }, { F (F_24_19) }, { F (F_FUNC) }, { 0 } }
    170 };
    171 
    172 static const CGEN_IFMT ifmt_j ATTRIBUTE_UNUSED = {
    173   32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RSRVD) }, { F (F_JTARG) }, { 0 } }
    174 };
    175 
    176 static const CGEN_IFMT ifmt_mrgbq10 ATTRIBUTE_UNUSED = {
    177   32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_MASKQ10) }, { F (F_FUNC) }, { 0 } }
    178 };
    179 
    180 static const CGEN_IFMT ifmt_mrgbq102 ATTRIBUTE_UNUSED = {
    181   32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_MASKQ10) }, { F (F_FUNC) }, { 0 } }
    182 };
    183 
    184 static const CGEN_IFMT ifmt_jq10 ATTRIBUTE_UNUSED = {
    185   32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_JTARG) }, { 0 } }
    186 };
    187 
    188 static const CGEN_IFMT ifmt_jalq10 ATTRIBUTE_UNUSED = {
    189   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_JTARG) }, { 0 } }
    190 };
    191 
    192 static const CGEN_IFMT ifmt_avail ATTRIBUTE_UNUSED = {
    193   32, 32, 0xffff07ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
    194 };
    195 
    196 static const CGEN_IFMT ifmt_rbi ATTRIBUTE_UNUSED = {
    197   32, 32, 0xfc000700, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
    198 };
    199 
    200 static const CGEN_IFMT ifmt_cam36 ATTRIBUTE_UNUSED = {
    201   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 } }
    202 };
    203 
    204 static const CGEN_IFMT ifmt_cm32and ATTRIBUTE_UNUSED = {
    205   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 } }
    206 };
    207 
    208 static const CGEN_IFMT ifmt_cm32rd ATTRIBUTE_UNUSED = {
    209   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 } }
    210 };
    211 
    212 static const CGEN_IFMT ifmt_cm128ria3 ATTRIBUTE_UNUSED = {
    213   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 } }
    214 };
    215 
    216 static const CGEN_IFMT ifmt_cm128ria4 ATTRIBUTE_UNUSED = {
    217   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 } }
    218 };
    219 
    220 static const CGEN_IFMT ifmt_ctc ATTRIBUTE_UNUSED = {
    221   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
    222 };
    223 
    224 #undef F
    225 
    226 #define A(a) (1 << CGEN_INSN_##a)
    227 #define OPERAND(op) IQ2000_OPERAND_##op
    228 #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
    229 #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
    230 
    231 /* The instruction table.  */
    232 
    233 static const CGEN_OPCODE iq2000_cgen_insn_opcode_table[MAX_INSNS] =
    234 {
    235   /* Special null first entry.
    236      A `num' value of zero is thus invalid.
    237      Also, the special `invalid' insn resides here.  */
    238   { { 0, 0, 0, 0 }, {{0}}, 0, {0}},
    239 /* add ${rd-rs},$rt */
    240   {
    241     { 0, 0, 0, 0 },
    242     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
    243     & ifmt_add2, { 0x20 }
    244   },
    245 /* add $rd,$rs,$rt */
    246   {
    247     { 0, 0, 0, 0 },
    248     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
    249     & ifmt_add, { 0x20 }
    250   },
    251 /* addi ${rt-rs},$lo16 */
    252   {
    253     { 0, 0, 0, 0 },
    254     { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
    255     & ifmt_addi2, { 0x20000000 }
    256   },
    257 /* addi $rt,$rs,$lo16 */
    258   {
    259     { 0, 0, 0, 0 },
    260     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
    261     & ifmt_addi, { 0x20000000 }
    262   },
    263 /* addiu ${rt-rs},$lo16 */
    264   {
    265     { 0, 0, 0, 0 },
    266     { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
    267     & ifmt_addi2, { 0x24000000 }
    268   },
    269 /* addiu $rt,$rs,$lo16 */
    270   {
    271     { 0, 0, 0, 0 },
    272     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
    273     & ifmt_addi, { 0x24000000 }
    274   },
    275 /* addu ${rd-rs},$rt */
    276   {
    277     { 0, 0, 0, 0 },
    278     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
    279     & ifmt_add2, { 0x21 }
    280   },
    281 /* addu $rd,$rs,$rt */
    282   {
    283     { 0, 0, 0, 0 },
    284     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
    285     & ifmt_add, { 0x21 }
    286   },
    287 /* ado16 ${rd-rs},$rt */
    288   {
    289     { 0, 0, 0, 0 },
    290     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
    291     & ifmt_add2, { 0x29 }
    292   },
    293 /* ado16 $rd,$rs,$rt */
    294   {
    295     { 0, 0, 0, 0 },
    296     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
    297     & ifmt_add, { 0x29 }
    298   },
    299 /* and ${rd-rs},$rt */
    300   {
    301     { 0, 0, 0, 0 },
    302     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
    303     & ifmt_add2, { 0x24 }
    304   },
    305 /* and $rd,$rs,$rt */
    306   {
    307     { 0, 0, 0, 0 },
    308     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
    309     & ifmt_add, { 0x24 }
    310   },
    311 /* andi ${rt-rs},$lo16 */
    312   {
    313     { 0, 0, 0, 0 },
    314     { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
    315     & ifmt_addi2, { 0x30000000 }
    316   },
    317 /* andi $rt,$rs,$lo16 */
    318   {
    319     { 0, 0, 0, 0 },
    320     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
    321     & ifmt_addi, { 0x30000000 }
    322   },
    323 /* andoi ${rt-rs},$lo16 */
    324   {
    325     { 0, 0, 0, 0 },
    326     { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
    327     & ifmt_addi2, { 0xb0000000 }
    328   },
    329 /* andoi $rt,$rs,$lo16 */
    330   {
    331     { 0, 0, 0, 0 },
    332     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
    333     & ifmt_addi, { 0xb0000000 }
    334   },
    335 /* nor ${rd-rs},$rt */
    336   {
    337     { 0, 0, 0, 0 },
    338     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
    339     & ifmt_add2, { 0x27 }
    340   },
    341 /* nor $rd,$rs,$rt */
    342   {
    343     { 0, 0, 0, 0 },
    344     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
    345     & ifmt_add, { 0x27 }
    346   },
    347 /* or ${rd-rs},$rt */
    348   {
    349     { 0, 0, 0, 0 },
    350     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
    351     & ifmt_add2, { 0x25 }
    352   },
    353 /* or $rd,$rs,$rt */
    354   {
    355     { 0, 0, 0, 0 },
    356     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
    357     & ifmt_add, { 0x25 }
    358   },
    359 /* ori ${rt-rs},$lo16 */
    360   {
    361     { 0, 0, 0, 0 },
    362     { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
    363     & ifmt_addi2, { 0x34000000 }
    364   },
    365 /* ori $rt,$rs,$lo16 */
    366   {
    367     { 0, 0, 0, 0 },
    368     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
    369     & ifmt_addi, { 0x34000000 }
    370   },
    371 /* ram $rd,$rt,$shamt,$maskl,$maskr */
    372   {
    373     { 0, 0, 0, 0 },
    374     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), ',', OP (MASKL), ',', OP (MASKR), 0 } },
    375     & ifmt_ram, { 0x9c000000 }
    376   },
    377 /* sll $rd,$rt,$shamt */
    378   {
    379     { 0, 0, 0, 0 },
    380     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
    381     & ifmt_sll, { 0x0 }
    382   },
    383 /* sllv ${rd-rt},$rs */
    384   {
    385     { 0, 0, 0, 0 },
    386     { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
    387     & ifmt_sllv2, { 0x4 }
    388   },
    389 /* sllv $rd,$rt,$rs */
    390   {
    391     { 0, 0, 0, 0 },
    392     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
    393     & ifmt_add, { 0x4 }
    394   },
    395 /* slmv ${rd-rt},$rs,$shamt */
    396   {
    397     { 0, 0, 0, 0 },
    398     { { MNEM, ' ', OP (RD_RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
    399     & ifmt_slmv2, { 0x1 }
    400   },
    401 /* slmv $rd,$rt,$rs,$shamt */
    402   {
    403     { 0, 0, 0, 0 },
    404     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
    405     & ifmt_slmv, { 0x1 }
    406   },
    407 /* slt ${rd-rs},$rt */
    408   {
    409     { 0, 0, 0, 0 },
    410     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
    411     & ifmt_add2, { 0x2a }
    412   },
    413 /* slt $rd,$rs,$rt */
    414   {
    415     { 0, 0, 0, 0 },
    416     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
    417     & ifmt_add, { 0x2a }
    418   },
    419 /* slti ${rt-rs},$imm */
    420   {
    421     { 0, 0, 0, 0 },
    422     { { MNEM, ' ', OP (RT_RS), ',', OP (IMM), 0 } },
    423     & ifmt_slti2, { 0x28000000 }
    424   },
    425 /* slti $rt,$rs,$imm */
    426   {
    427     { 0, 0, 0, 0 },
    428     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
    429     & ifmt_slti, { 0x28000000 }
    430   },
    431 /* sltiu ${rt-rs},$imm */
    432   {
    433     { 0, 0, 0, 0 },
    434     { { MNEM, ' ', OP (RT_RS), ',', OP (IMM), 0 } },
    435     & ifmt_slti2, { 0x2c000000 }
    436   },
    437 /* sltiu $rt,$rs,$imm */
    438   {
    439     { 0, 0, 0, 0 },
    440     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
    441     & ifmt_slti, { 0x2c000000 }
    442   },
    443 /* sltu ${rd-rs},$rt */
    444   {
    445     { 0, 0, 0, 0 },
    446     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
    447     & ifmt_add2, { 0x2b }
    448   },
    449 /* sltu $rd,$rs,$rt */
    450   {
    451     { 0, 0, 0, 0 },
    452     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
    453     & ifmt_add, { 0x2b }
    454   },
    455 /* sra ${rd-rt},$shamt */
    456   {
    457     { 0, 0, 0, 0 },
    458     { { MNEM, ' ', OP (RD_RT), ',', OP (SHAMT), 0 } },
    459     & ifmt_sra2, { 0x3 }
    460   },
    461 /* sra $rd,$rt,$shamt */
    462   {
    463     { 0, 0, 0, 0 },
    464     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
    465     & ifmt_sll, { 0x3 }
    466   },
    467 /* srav ${rd-rt},$rs */
    468   {
    469     { 0, 0, 0, 0 },
    470     { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
    471     & ifmt_sllv2, { 0x7 }
    472   },
    473 /* srav $rd,$rt,$rs */
    474   {
    475     { 0, 0, 0, 0 },
    476     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
    477     & ifmt_add, { 0x7 }
    478   },
    479 /* srl $rd,$rt,$shamt */
    480   {
    481     { 0, 0, 0, 0 },
    482     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
    483     & ifmt_sll, { 0x2 }
    484   },
    485 /* srlv ${rd-rt},$rs */
    486   {
    487     { 0, 0, 0, 0 },
    488     { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
    489     & ifmt_sllv2, { 0x6 }
    490   },
    491 /* srlv $rd,$rt,$rs */
    492   {
    493     { 0, 0, 0, 0 },
    494     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
    495     & ifmt_add, { 0x6 }
    496   },
    497 /* srmv ${rd-rt},$rs,$shamt */
    498   {
    499     { 0, 0, 0, 0 },
    500     { { MNEM, ' ', OP (RD_RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
    501     & ifmt_slmv2, { 0x5 }
    502   },
    503 /* srmv $rd,$rt,$rs,$shamt */
    504   {
    505     { 0, 0, 0, 0 },
    506     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
    507     & ifmt_slmv, { 0x5 }
    508   },
    509 /* sub ${rd-rs},$rt */
    510   {
    511     { 0, 0, 0, 0 },
    512     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
    513     & ifmt_add2, { 0x22 }
    514   },
    515 /* sub $rd,$rs,$rt */
    516   {
    517     { 0, 0, 0, 0 },
    518     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
    519     & ifmt_add, { 0x22 }
    520   },
    521 /* subu ${rd-rs},$rt */
    522   {
    523     { 0, 0, 0, 0 },
    524     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
    525     & ifmt_add2, { 0x23 }
    526   },
    527 /* subu $rd,$rs,$rt */
    528   {
    529     { 0, 0, 0, 0 },
    530     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
    531     & ifmt_add, { 0x23 }
    532   },
    533 /* xor ${rd-rs},$rt */
    534   {
    535     { 0, 0, 0, 0 },
    536     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
    537     & ifmt_add2, { 0x26 }
    538   },
    539 /* xor $rd,$rs,$rt */
    540   {
    541     { 0, 0, 0, 0 },
    542     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
    543     & ifmt_add, { 0x26 }
    544   },
    545 /* xori ${rt-rs},$lo16 */
    546   {
    547     { 0, 0, 0, 0 },
    548     { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
    549     & ifmt_addi2, { 0x38000000 }
    550   },
    551 /* xori $rt,$rs,$lo16 */
    552   {
    553     { 0, 0, 0, 0 },
    554     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
    555     & ifmt_addi, { 0x38000000 }
    556   },
    557 /* bbi $rs($bitnum),$offset */
    558   {
    559     { 0, 0, 0, 0 },
    560     { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
    561     & ifmt_bbi, { 0x70000000 }
    562   },
    563 /* bbin $rs($bitnum),$offset */
    564   {
    565     { 0, 0, 0, 0 },
    566     { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
    567     & ifmt_bbi, { 0x78000000 }
    568   },
    569 /* bbv $rs,$rt,$offset */
    570   {
    571     { 0, 0, 0, 0 },
    572     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
    573     & ifmt_bbv, { 0x74000000 }
    574   },
    575 /* bbvn $rs,$rt,$offset */
    576   {
    577     { 0, 0, 0, 0 },
    578     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
    579     & ifmt_bbv, { 0x7c000000 }
    580   },
    581 /* beq $rs,$rt,$offset */
    582   {
    583     { 0, 0, 0, 0 },
    584     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
    585     & ifmt_bbv, { 0x10000000 }
    586   },
    587 /* beql $rs,$rt,$offset */
    588   {
    589     { 0, 0, 0, 0 },
    590     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
    591     & ifmt_bbv, { 0x50000000 }
    592   },
    593 /* bgez $rs,$offset */
    594   {
    595     { 0, 0, 0, 0 },
    596     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
    597     & ifmt_bgez, { 0x4010000 }
    598   },
    599 /* bgezal $rs,$offset */
    600   {
    601     { 0, 0, 0, 0 },
    602     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
    603     & ifmt_bgez, { 0x4110000 }
    604   },
    605 /* bgezall $rs,$offset */
    606   {
    607     { 0, 0, 0, 0 },
    608     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
    609     & ifmt_bgez, { 0x4130000 }
    610   },
    611 /* bgezl $rs,$offset */
    612   {
    613     { 0, 0, 0, 0 },
    614     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
    615     & ifmt_bgez, { 0x4030000 }
    616   },
    617 /* bltz $rs,$offset */
    618   {
    619     { 0, 0, 0, 0 },
    620     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
    621     & ifmt_bgez, { 0x4000000 }
    622   },
    623 /* bltzl $rs,$offset */
    624   {
    625     { 0, 0, 0, 0 },
    626     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
    627     & ifmt_bgez, { 0x4020000 }
    628   },
    629 /* bltzal $rs,$offset */
    630   {
    631     { 0, 0, 0, 0 },
    632     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
    633     & ifmt_bgez, { 0x4100000 }
    634   },
    635 /* bltzall $rs,$offset */
    636   {
    637     { 0, 0, 0, 0 },
    638     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
    639     & ifmt_bgez, { 0x4120000 }
    640   },
    641 /* bmb0 $rs,$rt,$offset */
    642   {
    643     { 0, 0, 0, 0 },
    644     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
    645     & ifmt_bbv, { 0x60000000 }
    646   },
    647 /* bmb1 $rs,$rt,$offset */
    648   {
    649     { 0, 0, 0, 0 },
    650     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
    651     & ifmt_bbv, { 0x64000000 }
    652   },
    653 /* bmb2 $rs,$rt,$offset */
    654   {
    655     { 0, 0, 0, 0 },
    656     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
    657     & ifmt_bbv, { 0x68000000 }
    658   },
    659 /* bmb3 $rs,$rt,$offset */
    660   {
    661     { 0, 0, 0, 0 },
    662     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
    663     & ifmt_bbv, { 0x6c000000 }
    664   },
    665 /* bne $rs,$rt,$offset */
    666   {
    667     { 0, 0, 0, 0 },
    668     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
    669     & ifmt_bbv, { 0x14000000 }
    670   },
    671 /* bnel $rs,$rt,$offset */
    672   {
    673     { 0, 0, 0, 0 },
    674     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
    675     & ifmt_bbv, { 0x54000000 }
    676   },
    677 /* jalr $rd,$rs */
    678   {
    679     { 0, 0, 0, 0 },
    680     { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
    681     & ifmt_jalr, { 0x9 }
    682   },
    683 /* jr $rs */
    684   {
    685     { 0, 0, 0, 0 },
    686     { { MNEM, ' ', OP (RS), 0 } },
    687     & ifmt_jr, { 0x8 }
    688   },
    689 /* lb $rt,$lo16($base) */
    690   {
    691     { 0, 0, 0, 0 },
    692     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
    693     & ifmt_lb, { 0x80000000 }
    694   },
    695 /* lbu $rt,$lo16($base) */
    696   {
    697     { 0, 0, 0, 0 },
    698     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
    699     & ifmt_lb, { 0x90000000 }
    700   },
    701 /* lh $rt,$lo16($base) */
    702   {
    703     { 0, 0, 0, 0 },
    704     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
    705     & ifmt_lb, { 0x84000000 }
    706   },
    707 /* lhu $rt,$lo16($base) */
    708   {
    709     { 0, 0, 0, 0 },
    710     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
    711     & ifmt_lb, { 0x94000000 }
    712   },
    713 /* lui $rt,$hi16 */
    714   {
    715     { 0, 0, 0, 0 },
    716     { { MNEM, ' ', OP (RT), ',', OP (HI16), 0 } },
    717     & ifmt_lui, { 0x3c000000 }
    718   },
    719 /* lw $rt,$lo16($base) */
    720   {
    721     { 0, 0, 0, 0 },
    722     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
    723     & ifmt_lb, { 0x8c000000 }
    724   },
    725 /* sb $rt,$lo16($base) */
    726   {
    727     { 0, 0, 0, 0 },
    728     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
    729     & ifmt_lb, { 0xa0000000 }
    730   },
    731 /* sh $rt,$lo16($base) */
    732   {
    733     { 0, 0, 0, 0 },
    734     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
    735     & ifmt_lb, { 0xa4000000 }
    736   },
    737 /* sw $rt,$lo16($base) */
    738   {
    739     { 0, 0, 0, 0 },
    740     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
    741     & ifmt_lb, { 0xac000000 }
    742   },
    743 /* break */
    744   {
    745     { 0, 0, 0, 0 },
    746     { { MNEM, 0 } },
    747     & ifmt_break, { 0xd }
    748   },
    749 /* syscall */
    750   {
    751     { 0, 0, 0, 0 },
    752     { { MNEM, 0 } },
    753     & ifmt_syscall, { 0xc }
    754   },
    755 /* andoui $rt,$rs,$hi16 */
    756   {
    757     { 0, 0, 0, 0 },
    758     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
    759     & ifmt_andoui, { 0xfc000000 }
    760   },
    761 /* andoui ${rt-rs},$hi16 */
    762   {
    763     { 0, 0, 0, 0 },
    764     { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
    765     & ifmt_andoui2, { 0xfc000000 }
    766   },
    767 /* orui ${rt-rs},$hi16 */
    768   {
    769     { 0, 0, 0, 0 },
    770     { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
    771     & ifmt_andoui2, { 0xbc000000 }
    772   },
    773 /* orui $rt,$rs,$hi16 */
    774   {
    775     { 0, 0, 0, 0 },
    776     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
    777     & ifmt_andoui, { 0xbc000000 }
    778   },
    779 /* bgtz $rs,$offset */
    780   {
    781     { 0, 0, 0, 0 },
    782     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
    783     & ifmt_bgez, { 0x1c000000 }
    784   },
    785 /* bgtzl $rs,$offset */
    786   {
    787     { 0, 0, 0, 0 },
    788     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
    789     & ifmt_bgez, { 0x5c000000 }
    790   },
    791 /* blez $rs,$offset */
    792   {
    793     { 0, 0, 0, 0 },
    794     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
    795     & ifmt_bgez, { 0x18000000 }
    796   },
    797 /* blezl $rs,$offset */
    798   {
    799     { 0, 0, 0, 0 },
    800     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
    801     & ifmt_bgez, { 0x58000000 }
    802   },
    803 /* mrgb $rd,$rs,$rt,$mask */
    804   {
    805     { 0, 0, 0, 0 },
    806     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (MASK), 0 } },
    807     & ifmt_mrgb, { 0x2d }
    808   },
    809 /* mrgb ${rd-rs},$rt,$mask */
    810   {
    811     { 0, 0, 0, 0 },
    812     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), ',', OP (MASK), 0 } },
    813     & ifmt_mrgb2, { 0x2d }
    814   },
    815 /* bctxt $rs,$offset */
    816   {
    817     { 0, 0, 0, 0 },
    818     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
    819     & ifmt_bgez, { 0x4060000 }
    820   },
    821 /* bc0f $offset */
    822   {
    823     { 0, 0, 0, 0 },
    824     { { MNEM, ' ', OP (OFFSET), 0 } },
    825     & ifmt_bc0f, { 0x41000000 }
    826   },
    827 /* bc0fl $offset */
    828   {
    829     { 0, 0, 0, 0 },
    830     { { MNEM, ' ', OP (OFFSET), 0 } },
    831     & ifmt_bc0f, { 0x41020000 }
    832   },
    833 /* bc3f $offset */
    834   {
    835     { 0, 0, 0, 0 },
    836     { { MNEM, ' ', OP (OFFSET), 0 } },
    837     & ifmt_bc0f, { 0x4d000000 }
    838   },
    839 /* bc3fl $offset */
    840   {
    841     { 0, 0, 0, 0 },
    842     { { MNEM, ' ', OP (OFFSET), 0 } },
    843     & ifmt_bc0f, { 0x4d020000 }
    844   },
    845 /* bc0t $offset */
    846   {
    847     { 0, 0, 0, 0 },
    848     { { MNEM, ' ', OP (OFFSET), 0 } },
    849     & ifmt_bc0f, { 0x41010000 }
    850   },
    851 /* bc0tl $offset */
    852   {
    853     { 0, 0, 0, 0 },
    854     { { MNEM, ' ', OP (OFFSET), 0 } },
    855     & ifmt_bc0f, { 0x41030000 }
    856   },
    857 /* bc3t $offset */
    858   {
    859     { 0, 0, 0, 0 },
    860     { { MNEM, ' ', OP (OFFSET), 0 } },
    861     & ifmt_bc0f, { 0x4d010000 }
    862   },
    863 /* bc3tl $offset */
    864   {
    865     { 0, 0, 0, 0 },
    866     { { MNEM, ' ', OP (OFFSET), 0 } },
    867     & ifmt_bc0f, { 0x4d030000 }
    868   },
    869 /* cfc0 $rt,$rd */
    870   {
    871     { 0, 0, 0, 0 },
    872     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    873     & ifmt_cfc0, { 0x40400000 }
    874   },
    875 /* cfc1 $rt,$rd */
    876   {
    877     { 0, 0, 0, 0 },
    878     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    879     & ifmt_cfc0, { 0x44400000 }
    880   },
    881 /* cfc2 $rt,$rd */
    882   {
    883     { 0, 0, 0, 0 },
    884     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    885     & ifmt_cfc0, { 0x48400000 }
    886   },
    887 /* cfc3 $rt,$rd */
    888   {
    889     { 0, 0, 0, 0 },
    890     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    891     & ifmt_cfc0, { 0x4c400000 }
    892   },
    893 /* chkhdr $rd,$rt */
    894   {
    895     { 0, 0, 0, 0 },
    896     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
    897     & ifmt_chkhdr, { 0x4d200000 }
    898   },
    899 /* ctc0 $rt,$rd */
    900   {
    901     { 0, 0, 0, 0 },
    902     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    903     & ifmt_cfc0, { 0x40c00000 }
    904   },
    905 /* ctc1 $rt,$rd */
    906   {
    907     { 0, 0, 0, 0 },
    908     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    909     & ifmt_cfc0, { 0x44c00000 }
    910   },
    911 /* ctc2 $rt,$rd */
    912   {
    913     { 0, 0, 0, 0 },
    914     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    915     & ifmt_cfc0, { 0x48c00000 }
    916   },
    917 /* ctc3 $rt,$rd */
    918   {
    919     { 0, 0, 0, 0 },
    920     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    921     & ifmt_cfc0, { 0x4cc00000 }
    922   },
    923 /* jcr $rs */
    924   {
    925     { 0, 0, 0, 0 },
    926     { { MNEM, ' ', OP (RS), 0 } },
    927     & ifmt_jr, { 0xa }
    928   },
    929 /* luc32 $rt,$rd */
    930   {
    931     { 0, 0, 0, 0 },
    932     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    933     & ifmt_chkhdr, { 0x48200003 }
    934   },
    935 /* luc32l $rt,$rd */
    936   {
    937     { 0, 0, 0, 0 },
    938     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    939     & ifmt_chkhdr, { 0x48200007 }
    940   },
    941 /* luc64 $rt,$rd */
    942   {
    943     { 0, 0, 0, 0 },
    944     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    945     & ifmt_chkhdr, { 0x4820000b }
    946   },
    947 /* luc64l $rt,$rd */
    948   {
    949     { 0, 0, 0, 0 },
    950     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    951     & ifmt_chkhdr, { 0x4820000f }
    952   },
    953 /* luk $rt,$rd */
    954   {
    955     { 0, 0, 0, 0 },
    956     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    957     & ifmt_chkhdr, { 0x48200008 }
    958   },
    959 /* lulck $rt */
    960   {
    961     { 0, 0, 0, 0 },
    962     { { MNEM, ' ', OP (RT), 0 } },
    963     & ifmt_lulck, { 0x48200004 }
    964   },
    965 /* lum32 $rt,$rd */
    966   {
    967     { 0, 0, 0, 0 },
    968     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    969     & ifmt_chkhdr, { 0x48200002 }
    970   },
    971 /* lum32l $rt,$rd */
    972   {
    973     { 0, 0, 0, 0 },
    974     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    975     & ifmt_chkhdr, { 0x48200006 }
    976   },
    977 /* lum64 $rt,$rd */
    978   {
    979     { 0, 0, 0, 0 },
    980     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    981     & ifmt_chkhdr, { 0x4820000a }
    982   },
    983 /* lum64l $rt,$rd */
    984   {
    985     { 0, 0, 0, 0 },
    986     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    987     & ifmt_chkhdr, { 0x4820000e }
    988   },
    989 /* lur $rt,$rd */
    990   {
    991     { 0, 0, 0, 0 },
    992     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    993     & ifmt_chkhdr, { 0x48200001 }
    994   },
    995 /* lurl $rt,$rd */
    996   {
    997     { 0, 0, 0, 0 },
    998     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
    999     & ifmt_chkhdr, { 0x48200005 }
   1000   },
   1001 /* luulck $rt */
   1002   {
   1003     { 0, 0, 0, 0 },
   1004     { { MNEM, ' ', OP (RT), 0 } },
   1005     & ifmt_lulck, { 0x48200000 }
   1006   },
   1007 /* mfc0 $rt,$rd */
   1008   {
   1009     { 0, 0, 0, 0 },
   1010     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
   1011     & ifmt_cfc0, { 0x40000000 }
   1012   },
   1013 /* mfc1 $rt,$rd */
   1014   {
   1015     { 0, 0, 0, 0 },
   1016     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
   1017     & ifmt_cfc0, { 0x44000000 }
   1018   },
   1019 /* mfc2 $rt,$rd */
   1020   {
   1021     { 0, 0, 0, 0 },
   1022     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
   1023     & ifmt_cfc0, { 0x48000000 }
   1024   },
   1025 /* mfc3 $rt,$rd */
   1026   {
   1027     { 0, 0, 0, 0 },
   1028     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
   1029     & ifmt_cfc0, { 0x4c000000 }
   1030   },
   1031 /* mtc0 $rt,$rd */
   1032   {
   1033     { 0, 0, 0, 0 },
   1034     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
   1035     & ifmt_cfc0, { 0x40800000 }
   1036   },
   1037 /* mtc1 $rt,$rd */
   1038   {
   1039     { 0, 0, 0, 0 },
   1040     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
   1041     & ifmt_cfc0, { 0x44800000 }
   1042   },
   1043 /* mtc2 $rt,$rd */
   1044   {
   1045     { 0, 0, 0, 0 },
   1046     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
   1047     & ifmt_cfc0, { 0x48800000 }
   1048   },
   1049 /* mtc3 $rt,$rd */
   1050   {
   1051     { 0, 0, 0, 0 },
   1052     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
   1053     & ifmt_cfc0, { 0x4c800000 }
   1054   },
   1055 /* pkrl $rd,$rt */
   1056   {
   1057     { 0, 0, 0, 0 },
   1058     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1059     & ifmt_chkhdr, { 0x4c200007 }
   1060   },
   1061 /* pkrlr1 $rt,$_index,$count */
   1062   {
   1063     { 0, 0, 0, 0 },
   1064     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
   1065     & ifmt_pkrlr1, { 0x4fa00000 }
   1066   },
   1067 /* pkrlr30 $rt,$_index,$count */
   1068   {
   1069     { 0, 0, 0, 0 },
   1070     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
   1071     & ifmt_pkrlr1, { 0x4fe00000 }
   1072   },
   1073 /* rb $rd,$rt */
   1074   {
   1075     { 0, 0, 0, 0 },
   1076     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1077     & ifmt_chkhdr, { 0x4c200004 }
   1078   },
   1079 /* rbr1 $rt,$_index,$count */
   1080   {
   1081     { 0, 0, 0, 0 },
   1082     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
   1083     & ifmt_pkrlr1, { 0x4f000000 }
   1084   },
   1085 /* rbr30 $rt,$_index,$count */
   1086   {
   1087     { 0, 0, 0, 0 },
   1088     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
   1089     & ifmt_pkrlr1, { 0x4f400000 }
   1090   },
   1091 /* rfe */
   1092   {
   1093     { 0, 0, 0, 0 },
   1094     { { MNEM, 0 } },
   1095     & ifmt_rfe, { 0x42000010 }
   1096   },
   1097 /* rx $rd,$rt */
   1098   {
   1099     { 0, 0, 0, 0 },
   1100     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1101     & ifmt_chkhdr, { 0x4c200006 }
   1102   },
   1103 /* rxr1 $rt,$_index,$count */
   1104   {
   1105     { 0, 0, 0, 0 },
   1106     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
   1107     & ifmt_pkrlr1, { 0x4f800000 }
   1108   },
   1109 /* rxr30 $rt,$_index,$count */
   1110   {
   1111     { 0, 0, 0, 0 },
   1112     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
   1113     & ifmt_pkrlr1, { 0x4fc00000 }
   1114   },
   1115 /* sleep */
   1116   {
   1117     { 0, 0, 0, 0 },
   1118     { { MNEM, 0 } },
   1119     & ifmt_syscall, { 0xe }
   1120   },
   1121 /* srrd $rt */
   1122   {
   1123     { 0, 0, 0, 0 },
   1124     { { MNEM, ' ', OP (RT), 0 } },
   1125     & ifmt_lulck, { 0x48200010 }
   1126   },
   1127 /* srrdl $rt */
   1128   {
   1129     { 0, 0, 0, 0 },
   1130     { { MNEM, ' ', OP (RT), 0 } },
   1131     & ifmt_lulck, { 0x48200014 }
   1132   },
   1133 /* srulck $rt */
   1134   {
   1135     { 0, 0, 0, 0 },
   1136     { { MNEM, ' ', OP (RT), 0 } },
   1137     & ifmt_lulck, { 0x48200016 }
   1138   },
   1139 /* srwr $rt,$rd */
   1140   {
   1141     { 0, 0, 0, 0 },
   1142     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
   1143     & ifmt_chkhdr, { 0x48200011 }
   1144   },
   1145 /* srwru $rt,$rd */
   1146   {
   1147     { 0, 0, 0, 0 },
   1148     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
   1149     & ifmt_chkhdr, { 0x48200015 }
   1150   },
   1151 /* trapqfl */
   1152   {
   1153     { 0, 0, 0, 0 },
   1154     { { MNEM, 0 } },
   1155     & ifmt_break, { 0x4c200008 }
   1156   },
   1157 /* trapqne */
   1158   {
   1159     { 0, 0, 0, 0 },
   1160     { { MNEM, 0 } },
   1161     & ifmt_break, { 0x4c200009 }
   1162   },
   1163 /* traprel $rt */
   1164   {
   1165     { 0, 0, 0, 0 },
   1166     { { MNEM, ' ', OP (RT), 0 } },
   1167     & ifmt_lulck, { 0x4c20000a }
   1168   },
   1169 /* wb $rd,$rt */
   1170   {
   1171     { 0, 0, 0, 0 },
   1172     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1173     & ifmt_chkhdr, { 0x4c200000 }
   1174   },
   1175 /* wbu $rd,$rt */
   1176   {
   1177     { 0, 0, 0, 0 },
   1178     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1179     & ifmt_chkhdr, { 0x4c200001 }
   1180   },
   1181 /* wbr1 $rt,$_index,$count */
   1182   {
   1183     { 0, 0, 0, 0 },
   1184     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
   1185     & ifmt_pkrlr1, { 0x4e000000 }
   1186   },
   1187 /* wbr1u $rt,$_index,$count */
   1188   {
   1189     { 0, 0, 0, 0 },
   1190     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
   1191     & ifmt_pkrlr1, { 0x4e200000 }
   1192   },
   1193 /* wbr30 $rt,$_index,$count */
   1194   {
   1195     { 0, 0, 0, 0 },
   1196     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
   1197     & ifmt_pkrlr1, { 0x4e400000 }
   1198   },
   1199 /* wbr30u $rt,$_index,$count */
   1200   {
   1201     { 0, 0, 0, 0 },
   1202     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
   1203     & ifmt_pkrlr1, { 0x4e600000 }
   1204   },
   1205 /* wx $rd,$rt */
   1206   {
   1207     { 0, 0, 0, 0 },
   1208     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1209     & ifmt_chkhdr, { 0x4c200002 }
   1210   },
   1211 /* wxu $rd,$rt */
   1212   {
   1213     { 0, 0, 0, 0 },
   1214     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1215     & ifmt_chkhdr, { 0x4c200003 }
   1216   },
   1217 /* wxr1 $rt,$_index,$count */
   1218   {
   1219     { 0, 0, 0, 0 },
   1220     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
   1221     & ifmt_pkrlr1, { 0x4e800000 }
   1222   },
   1223 /* wxr1u $rt,$_index,$count */
   1224   {
   1225     { 0, 0, 0, 0 },
   1226     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
   1227     & ifmt_pkrlr1, { 0x4ea00000 }
   1228   },
   1229 /* wxr30 $rt,$_index,$count */
   1230   {
   1231     { 0, 0, 0, 0 },
   1232     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
   1233     & ifmt_pkrlr1, { 0x4ec00000 }
   1234   },
   1235 /* wxr30u $rt,$_index,$count */
   1236   {
   1237     { 0, 0, 0, 0 },
   1238     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
   1239     & ifmt_pkrlr1, { 0x4ee00000 }
   1240   },
   1241 /* ldw $rt,$lo16($base) */
   1242   {
   1243     { 0, 0, 0, 0 },
   1244     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
   1245     & ifmt_lb, { 0xc0000000 }
   1246   },
   1247 /* sdw $rt,$lo16($base) */
   1248   {
   1249     { 0, 0, 0, 0 },
   1250     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
   1251     & ifmt_lb, { 0xe0000000 }
   1252   },
   1253 /* j $jmptarg */
   1254   {
   1255     { 0, 0, 0, 0 },
   1256     { { MNEM, ' ', OP (JMPTARG), 0 } },
   1257     & ifmt_j, { 0x8000000 }
   1258   },
   1259 /* jal $jmptarg */
   1260   {
   1261     { 0, 0, 0, 0 },
   1262     { { MNEM, ' ', OP (JMPTARG), 0 } },
   1263     & ifmt_j, { 0xc000000 }
   1264   },
   1265 /* bmb $rs,$rt,$offset */
   1266   {
   1267     { 0, 0, 0, 0 },
   1268     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
   1269     & ifmt_bbv, { 0xb4000000 }
   1270   },
   1271 /* andoui $rt,$rs,$hi16 */
   1272   {
   1273     { 0, 0, 0, 0 },
   1274     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
   1275     & ifmt_andoui, { 0xbc000000 }
   1276   },
   1277 /* andoui ${rt-rs},$hi16 */
   1278   {
   1279     { 0, 0, 0, 0 },
   1280     { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
   1281     & ifmt_andoui2, { 0xbc000000 }
   1282   },
   1283 /* orui $rt,$rs,$hi16 */
   1284   {
   1285     { 0, 0, 0, 0 },
   1286     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
   1287     & ifmt_andoui, { 0x3c000000 }
   1288   },
   1289 /* orui ${rt-rs},$hi16 */
   1290   {
   1291     { 0, 0, 0, 0 },
   1292     { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
   1293     & ifmt_andoui2, { 0x3c000000 }
   1294   },
   1295 /* mrgb $rd,$rs,$rt,$maskq10 */
   1296   {
   1297     { 0, 0, 0, 0 },
   1298     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (MASKQ10), 0 } },
   1299     & ifmt_mrgbq10, { 0x2d }
   1300   },
   1301 /* mrgb ${rd-rs},$rt,$maskq10 */
   1302   {
   1303     { 0, 0, 0, 0 },
   1304     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), ',', OP (MASKQ10), 0 } },
   1305     & ifmt_mrgbq102, { 0x2d }
   1306   },
   1307 /* j $jmptarg */
   1308   {
   1309     { 0, 0, 0, 0 },
   1310     { { MNEM, ' ', OP (JMPTARG), 0 } },
   1311     & ifmt_jq10, { 0x8000000 }
   1312   },
   1313 /* jal $rt,$jmptarg */
   1314   {
   1315     { 0, 0, 0, 0 },
   1316     { { MNEM, ' ', OP (RT), ',', OP (JMPTARG), 0 } },
   1317     & ifmt_jalq10, { 0xc000000 }
   1318   },
   1319 /* jal $jmptarg */
   1320   {
   1321     { 0, 0, 0, 0 },
   1322     { { MNEM, ' ', OP (JMPTARG), 0 } },
   1323     & ifmt_jq10, { 0xc1f0000 }
   1324   },
   1325 /* bbil $rs($bitnum),$offset */
   1326   {
   1327     { 0, 0, 0, 0 },
   1328     { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
   1329     & ifmt_bbi, { 0xf0000000 }
   1330   },
   1331 /* bbinl $rs($bitnum),$offset */
   1332   {
   1333     { 0, 0, 0, 0 },
   1334     { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
   1335     & ifmt_bbi, { 0xf8000000 }
   1336   },
   1337 /* bbvl $rs,$rt,$offset */
   1338   {
   1339     { 0, 0, 0, 0 },
   1340     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
   1341     & ifmt_bbv, { 0xf4000000 }
   1342   },
   1343 /* bbvnl $rs,$rt,$offset */
   1344   {
   1345     { 0, 0, 0, 0 },
   1346     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
   1347     & ifmt_bbv, { 0xfc000000 }
   1348   },
   1349 /* bgtzal $rs,$offset */
   1350   {
   1351     { 0, 0, 0, 0 },
   1352     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
   1353     & ifmt_bgez, { 0x4150000 }
   1354   },
   1355 /* bgtzall $rs,$offset */
   1356   {
   1357     { 0, 0, 0, 0 },
   1358     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
   1359     & ifmt_bgez, { 0x4170000 }
   1360   },
   1361 /* blezal $rs,$offset */
   1362   {
   1363     { 0, 0, 0, 0 },
   1364     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
   1365     & ifmt_bgez, { 0x4140000 }
   1366   },
   1367 /* blezall $rs,$offset */
   1368   {
   1369     { 0, 0, 0, 0 },
   1370     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
   1371     & ifmt_bgez, { 0x4160000 }
   1372   },
   1373 /* bgtz $rs,$offset */
   1374   {
   1375     { 0, 0, 0, 0 },
   1376     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
   1377     & ifmt_bgez, { 0x4050000 }
   1378   },
   1379 /* bgtzl $rs,$offset */
   1380   {
   1381     { 0, 0, 0, 0 },
   1382     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
   1383     & ifmt_bgez, { 0x4070000 }
   1384   },
   1385 /* blez $rs,$offset */
   1386   {
   1387     { 0, 0, 0, 0 },
   1388     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
   1389     & ifmt_bgez, { 0x4040000 }
   1390   },
   1391 /* blezl $rs,$offset */
   1392   {
   1393     { 0, 0, 0, 0 },
   1394     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
   1395     & ifmt_bgez, { 0x4060000 }
   1396   },
   1397 /* bmb $rs,$rt,$offset */
   1398   {
   1399     { 0, 0, 0, 0 },
   1400     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
   1401     & ifmt_bbv, { 0x18000000 }
   1402   },
   1403 /* bmbl $rs,$rt,$offset */
   1404   {
   1405     { 0, 0, 0, 0 },
   1406     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
   1407     & ifmt_bbv, { 0x58000000 }
   1408   },
   1409 /* bri $rs,$offset */
   1410   {
   1411     { 0, 0, 0, 0 },
   1412     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
   1413     & ifmt_bgez, { 0x4080000 }
   1414   },
   1415 /* brv $rs,$offset */
   1416   {
   1417     { 0, 0, 0, 0 },
   1418     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
   1419     & ifmt_bgez, { 0x4090000 }
   1420   },
   1421 /* bctx $rs,$offset */
   1422   {
   1423     { 0, 0, 0, 0 },
   1424     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
   1425     & ifmt_bgez, { 0x40c0000 }
   1426   },
   1427 /* yield */
   1428   {
   1429     { 0, 0, 0, 0 },
   1430     { { MNEM, 0 } },
   1431     & ifmt_break, { 0xe }
   1432   },
   1433 /* crc32 $rd,$rs,$rt */
   1434   {
   1435     { 0, 0, 0, 0 },
   1436     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1437     & ifmt_add, { 0x4c000014 }
   1438   },
   1439 /* crc32b $rd,$rs,$rt */
   1440   {
   1441     { 0, 0, 0, 0 },
   1442     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1443     & ifmt_add, { 0x4c000015 }
   1444   },
   1445 /* cnt1s $rd,$rs */
   1446   {
   1447     { 0, 0, 0, 0 },
   1448     { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
   1449     & ifmt_add, { 0x2e }
   1450   },
   1451 /* avail $rd */
   1452   {
   1453     { 0, 0, 0, 0 },
   1454     { { MNEM, ' ', OP (RD), 0 } },
   1455     & ifmt_avail, { 0x4c000024 }
   1456   },
   1457 /* free $rd,$rs */
   1458   {
   1459     { 0, 0, 0, 0 },
   1460     { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
   1461     & ifmt_jalr, { 0x4c000025 }
   1462   },
   1463 /* tstod $rd,$rs */
   1464   {
   1465     { 0, 0, 0, 0 },
   1466     { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
   1467     & ifmt_jalr, { 0x4c000027 }
   1468   },
   1469 /* cmphdr $rd */
   1470   {
   1471     { 0, 0, 0, 0 },
   1472     { { MNEM, ' ', OP (RD), 0 } },
   1473     & ifmt_avail, { 0x4c00002c }
   1474   },
   1475 /* mcid $rd,$rt */
   1476   {
   1477     { 0, 0, 0, 0 },
   1478     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1479     & ifmt_chkhdr, { 0x4c000020 }
   1480   },
   1481 /* dba $rd */
   1482   {
   1483     { 0, 0, 0, 0 },
   1484     { { MNEM, ' ', OP (RD), 0 } },
   1485     & ifmt_avail, { 0x4c000022 }
   1486   },
   1487 /* dbd $rd,$rs,$rt */
   1488   {
   1489     { 0, 0, 0, 0 },
   1490     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1491     & ifmt_add, { 0x4c000021 }
   1492   },
   1493 /* dpwt $rd,$rs */
   1494   {
   1495     { 0, 0, 0, 0 },
   1496     { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
   1497     & ifmt_jalr, { 0x4c000023 }
   1498   },
   1499 /* chkhdr $rd,$rs */
   1500   {
   1501     { 0, 0, 0, 0 },
   1502     { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
   1503     & ifmt_jalr, { 0x4c000026 }
   1504   },
   1505 /* rba $rd,$rs,$rt */
   1506   {
   1507     { 0, 0, 0, 0 },
   1508     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1509     & ifmt_add, { 0x4c000008 }
   1510   },
   1511 /* rbal $rd,$rs,$rt */
   1512   {
   1513     { 0, 0, 0, 0 },
   1514     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1515     & ifmt_add, { 0x4c000009 }
   1516   },
   1517 /* rbar $rd,$rs,$rt */
   1518   {
   1519     { 0, 0, 0, 0 },
   1520     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1521     & ifmt_add, { 0x4c00000a }
   1522   },
   1523 /* wba $rd,$rs,$rt */
   1524   {
   1525     { 0, 0, 0, 0 },
   1526     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1527     & ifmt_add, { 0x4c000010 }
   1528   },
   1529 /* wbau $rd,$rs,$rt */
   1530   {
   1531     { 0, 0, 0, 0 },
   1532     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1533     & ifmt_add, { 0x4c000011 }
   1534   },
   1535 /* wbac $rd,$rs,$rt */
   1536   {
   1537     { 0, 0, 0, 0 },
   1538     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1539     & ifmt_add, { 0x4c000012 }
   1540   },
   1541 /* rbi $rd,$rs,$rt,$bytecount */
   1542   {
   1543     { 0, 0, 0, 0 },
   1544     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   1545     & ifmt_rbi, { 0x4c000200 }
   1546   },
   1547 /* rbil $rd,$rs,$rt,$bytecount */
   1548   {
   1549     { 0, 0, 0, 0 },
   1550     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   1551     & ifmt_rbi, { 0x4c000300 }
   1552   },
   1553 /* rbir $rd,$rs,$rt,$bytecount */
   1554   {
   1555     { 0, 0, 0, 0 },
   1556     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   1557     & ifmt_rbi, { 0x4c000100 }
   1558   },
   1559 /* wbi $rd,$rs,$rt,$bytecount */
   1560   {
   1561     { 0, 0, 0, 0 },
   1562     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   1563     & ifmt_rbi, { 0x4c000600 }
   1564   },
   1565 /* wbic $rd,$rs,$rt,$bytecount */
   1566   {
   1567     { 0, 0, 0, 0 },
   1568     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   1569     & ifmt_rbi, { 0x4c000500 }
   1570   },
   1571 /* wbiu $rd,$rs,$rt,$bytecount */
   1572   {
   1573     { 0, 0, 0, 0 },
   1574     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   1575     & ifmt_rbi, { 0x4c000700 }
   1576   },
   1577 /* pkrli $rd,$rs,$rt,$bytecount */
   1578   {
   1579     { 0, 0, 0, 0 },
   1580     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   1581     & ifmt_rbi, { 0x48000000 }
   1582   },
   1583 /* pkrlih $rd,$rs,$rt,$bytecount */
   1584   {
   1585     { 0, 0, 0, 0 },
   1586     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   1587     & ifmt_rbi, { 0x48000200 }
   1588   },
   1589 /* pkrliu $rd,$rs,$rt,$bytecount */
   1590   {
   1591     { 0, 0, 0, 0 },
   1592     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   1593     & ifmt_rbi, { 0x48000100 }
   1594   },
   1595 /* pkrlic $rd,$rs,$rt,$bytecount */
   1596   {
   1597     { 0, 0, 0, 0 },
   1598     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   1599     & ifmt_rbi, { 0x48000300 }
   1600   },
   1601 /* pkrla $rd,$rs,$rt */
   1602   {
   1603     { 0, 0, 0, 0 },
   1604     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1605     & ifmt_add, { 0x4c000028 }
   1606   },
   1607 /* pkrlau $rd,$rs,$rt */
   1608   {
   1609     { 0, 0, 0, 0 },
   1610     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1611     & ifmt_add, { 0x4c000029 }
   1612   },
   1613 /* pkrlah $rd,$rs,$rt */
   1614   {
   1615     { 0, 0, 0, 0 },
   1616     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1617     & ifmt_add, { 0x4c00002a }
   1618   },
   1619 /* pkrlac $rd,$rs,$rt */
   1620   {
   1621     { 0, 0, 0, 0 },
   1622     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1623     & ifmt_add, { 0x4c00002b }
   1624   },
   1625 /* lock $rd,$rt */
   1626   {
   1627     { 0, 0, 0, 0 },
   1628     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1629     & ifmt_chkhdr, { 0x4c000001 }
   1630   },
   1631 /* unlk $rd,$rt */
   1632   {
   1633     { 0, 0, 0, 0 },
   1634     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1635     & ifmt_chkhdr, { 0x4c000003 }
   1636   },
   1637 /* swrd $rd,$rt */
   1638   {
   1639     { 0, 0, 0, 0 },
   1640     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1641     & ifmt_chkhdr, { 0x4c000004 }
   1642   },
   1643 /* swrdl $rd,$rt */
   1644   {
   1645     { 0, 0, 0, 0 },
   1646     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1647     & ifmt_chkhdr, { 0x4c000005 }
   1648   },
   1649 /* swwr $rd,$rs,$rt */
   1650   {
   1651     { 0, 0, 0, 0 },
   1652     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1653     & ifmt_add, { 0x4c000006 }
   1654   },
   1655 /* swwru $rd,$rs,$rt */
   1656   {
   1657     { 0, 0, 0, 0 },
   1658     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1659     & ifmt_add, { 0x4c000007 }
   1660   },
   1661 /* dwrd $rd,$rt */
   1662   {
   1663     { 0, 0, 0, 0 },
   1664     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1665     & ifmt_chkhdr, { 0x4c00000c }
   1666   },
   1667 /* dwrdl $rd,$rt */
   1668   {
   1669     { 0, 0, 0, 0 },
   1670     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1671     & ifmt_chkhdr, { 0x4c00000d }
   1672   },
   1673 /* cam36 $rd,$rt,${cam-z},${cam-y} */
   1674   {
   1675     { 0, 0, 0, 0 },
   1676     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), ',', OP (CAM_Y), 0 } },
   1677     & ifmt_cam36, { 0x4c000400 }
   1678   },
   1679 /* cam72 $rd,$rt,${cam-y},${cam-z} */
   1680   {
   1681     { 0, 0, 0, 0 },
   1682     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
   1683     & ifmt_cam36, { 0x4c000440 }
   1684   },
   1685 /* cam144 $rd,$rt,${cam-y},${cam-z} */
   1686   {
   1687     { 0, 0, 0, 0 },
   1688     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
   1689     & ifmt_cam36, { 0x4c000480 }
   1690   },
   1691 /* cam288 $rd,$rt,${cam-y},${cam-z} */
   1692   {
   1693     { 0, 0, 0, 0 },
   1694     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
   1695     & ifmt_cam36, { 0x4c0004c0 }
   1696   },
   1697 /* cm32and $rd,$rs,$rt */
   1698   {
   1699     { 0, 0, 0, 0 },
   1700     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1701     & ifmt_cm32and, { 0x4c0000ab }
   1702   },
   1703 /* cm32andn $rd,$rs,$rt */
   1704   {
   1705     { 0, 0, 0, 0 },
   1706     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1707     & ifmt_cm32and, { 0x4c0000a3 }
   1708   },
   1709 /* cm32or $rd,$rs,$rt */
   1710   {
   1711     { 0, 0, 0, 0 },
   1712     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1713     & ifmt_cm32and, { 0x4c0000aa }
   1714   },
   1715 /* cm32ra $rd,$rs,$rt */
   1716   {
   1717     { 0, 0, 0, 0 },
   1718     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1719     & ifmt_add, { 0x4c0000b0 }
   1720   },
   1721 /* cm32rd $rd,$rt */
   1722   {
   1723     { 0, 0, 0, 0 },
   1724     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1725     & ifmt_cm32rd, { 0x4c0000a1 }
   1726   },
   1727 /* cm32ri $rd,$rt */
   1728   {
   1729     { 0, 0, 0, 0 },
   1730     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1731     & ifmt_cm32rd, { 0x4c0000a4 }
   1732   },
   1733 /* cm32rs $rd,$rs,$rt */
   1734   {
   1735     { 0, 0, 0, 0 },
   1736     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1737     & ifmt_add, { 0x4c0000a0 }
   1738   },
   1739 /* cm32sa $rd,$rs,$rt */
   1740   {
   1741     { 0, 0, 0, 0 },
   1742     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1743     & ifmt_cm32and, { 0x4c0000b8 }
   1744   },
   1745 /* cm32sd $rd,$rt */
   1746   {
   1747     { 0, 0, 0, 0 },
   1748     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1749     & ifmt_cm32rd, { 0x4c0000a9 }
   1750   },
   1751 /* cm32si $rd,$rt */
   1752   {
   1753     { 0, 0, 0, 0 },
   1754     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1755     & ifmt_cm32rd, { 0x4c0000ac }
   1756   },
   1757 /* cm32ss $rd,$rs,$rt */
   1758   {
   1759     { 0, 0, 0, 0 },
   1760     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1761     & ifmt_cm32and, { 0x4c0000a8 }
   1762   },
   1763 /* cm32xor $rd,$rs,$rt */
   1764   {
   1765     { 0, 0, 0, 0 },
   1766     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1767     & ifmt_cm32and, { 0x4c0000a2 }
   1768   },
   1769 /* cm64clr $rd,$rt */
   1770   {
   1771     { 0, 0, 0, 0 },
   1772     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1773     & ifmt_cm32rd, { 0x4c000085 }
   1774   },
   1775 /* cm64ra $rd,$rs,$rt */
   1776   {
   1777     { 0, 0, 0, 0 },
   1778     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1779     & ifmt_cm32and, { 0x4c000090 }
   1780   },
   1781 /* cm64rd $rd,$rt */
   1782   {
   1783     { 0, 0, 0, 0 },
   1784     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1785     & ifmt_cm32rd, { 0x4c000081 }
   1786   },
   1787 /* cm64ri $rd,$rt */
   1788   {
   1789     { 0, 0, 0, 0 },
   1790     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1791     & ifmt_cm32rd, { 0x4c000084 }
   1792   },
   1793 /* cm64ria2 $rd,$rs,$rt */
   1794   {
   1795     { 0, 0, 0, 0 },
   1796     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1797     & ifmt_cm32and, { 0x4c000094 }
   1798   },
   1799 /* cm64rs $rd,$rs,$rt */
   1800   {
   1801     { 0, 0, 0, 0 },
   1802     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1803     & ifmt_cm32and, { 0x4c000080 }
   1804   },
   1805 /* cm64sa $rd,$rs,$rt */
   1806   {
   1807     { 0, 0, 0, 0 },
   1808     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1809     & ifmt_cm32and, { 0x4c000098 }
   1810   },
   1811 /* cm64sd $rd,$rt */
   1812   {
   1813     { 0, 0, 0, 0 },
   1814     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1815     & ifmt_cm32rd, { 0x4c000089 }
   1816   },
   1817 /* cm64si $rd,$rt */
   1818   {
   1819     { 0, 0, 0, 0 },
   1820     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1821     & ifmt_cm32rd, { 0x4c00008c }
   1822   },
   1823 /* cm64sia2 $rd,$rs,$rt */
   1824   {
   1825     { 0, 0, 0, 0 },
   1826     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1827     & ifmt_cm32and, { 0x4c00009c }
   1828   },
   1829 /* cm64ss $rd,$rs,$rt */
   1830   {
   1831     { 0, 0, 0, 0 },
   1832     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1833     & ifmt_cm32and, { 0x4c000088 }
   1834   },
   1835 /* cm128ria2 $rd,$rs,$rt */
   1836   {
   1837     { 0, 0, 0, 0 },
   1838     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1839     & ifmt_cm32and, { 0x4c000095 }
   1840   },
   1841 /* cm128ria3 $rd,$rs,$rt,${cm-3z} */
   1842   {
   1843     { 0, 0, 0, 0 },
   1844     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
   1845     & ifmt_cm128ria3, { 0x4c000090 }
   1846   },
   1847 /* cm128ria4 $rd,$rs,$rt,${cm-4z} */
   1848   {
   1849     { 0, 0, 0, 0 },
   1850     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
   1851     & ifmt_cm128ria4, { 0x4c0000b0 }
   1852   },
   1853 /* cm128sia2 $rd,$rs,$rt */
   1854   {
   1855     { 0, 0, 0, 0 },
   1856     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1857     & ifmt_cm32and, { 0x4c00009d }
   1858   },
   1859 /* cm128sia3 $rd,$rs,$rt,${cm-3z} */
   1860   {
   1861     { 0, 0, 0, 0 },
   1862     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
   1863     & ifmt_cm128ria3, { 0x4c000098 }
   1864   },
   1865 /* cm128sia4 $rd,$rs,$rt,${cm-4z} */
   1866   {
   1867     { 0, 0, 0, 0 },
   1868     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
   1869     & ifmt_cm128ria4, { 0x4c0000b8 }
   1870   },
   1871 /* cm128vsa $rd,$rs,$rt */
   1872   {
   1873     { 0, 0, 0, 0 },
   1874     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
   1875     & ifmt_cm32and, { 0x4c0000a6 }
   1876   },
   1877 /* cfc $rd,$rt */
   1878   {
   1879     { 0, 0, 0, 0 },
   1880     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   1881     & ifmt_chkhdr, { 0x4c000000 }
   1882   },
   1883 /* ctc $rs,$rt */
   1884   {
   1885     { 0, 0, 0, 0 },
   1886     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   1887     & ifmt_ctc, { 0x4c000002 }
   1888   },
   1889 };
   1890 
   1891 #undef A
   1892 #undef OPERAND
   1893 #undef MNEM
   1894 #undef OP
   1895 
   1896 /* Formats for ALIAS macro-insns.  */
   1897 
   1898 #define F(f) & iq2000_cgen_ifld_table[IQ2000_##f]
   1899 static const CGEN_IFMT ifmt_nop ATTRIBUTE_UNUSED = {
   1900   32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   1901 };
   1902 
   1903 static const CGEN_IFMT ifmt_li ATTRIBUTE_UNUSED = {
   1904   32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   1905 };
   1906 
   1907 static const CGEN_IFMT ifmt_move ATTRIBUTE_UNUSED = {
   1908   32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   1909 };
   1910 
   1911 static const CGEN_IFMT ifmt_lb_base_0 ATTRIBUTE_UNUSED = {
   1912   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   1913 };
   1914 
   1915 static const CGEN_IFMT ifmt_lbu_base_0 ATTRIBUTE_UNUSED = {
   1916   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   1917 };
   1918 
   1919 static const CGEN_IFMT ifmt_lh_base_0 ATTRIBUTE_UNUSED = {
   1920   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   1921 };
   1922 
   1923 static const CGEN_IFMT ifmt_lw_base_0 ATTRIBUTE_UNUSED = {
   1924   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   1925 };
   1926 
   1927 static const CGEN_IFMT ifmt_m_add ATTRIBUTE_UNUSED = {
   1928   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   1929 };
   1930 
   1931 static const CGEN_IFMT ifmt_m_addu ATTRIBUTE_UNUSED = {
   1932   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   1933 };
   1934 
   1935 static const CGEN_IFMT ifmt_m_and ATTRIBUTE_UNUSED = {
   1936   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   1937 };
   1938 
   1939 static const CGEN_IFMT ifmt_m_j ATTRIBUTE_UNUSED = {
   1940   32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   1941 };
   1942 
   1943 static const CGEN_IFMT ifmt_m_or ATTRIBUTE_UNUSED = {
   1944   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   1945 };
   1946 
   1947 static const CGEN_IFMT ifmt_m_sll ATTRIBUTE_UNUSED = {
   1948   32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   1949 };
   1950 
   1951 static const CGEN_IFMT ifmt_m_slt ATTRIBUTE_UNUSED = {
   1952   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   1953 };
   1954 
   1955 static const CGEN_IFMT ifmt_m_sltu ATTRIBUTE_UNUSED = {
   1956   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   1957 };
   1958 
   1959 static const CGEN_IFMT ifmt_m_sra ATTRIBUTE_UNUSED = {
   1960   32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   1961 };
   1962 
   1963 static const CGEN_IFMT ifmt_m_srl ATTRIBUTE_UNUSED = {
   1964   32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   1965 };
   1966 
   1967 static const CGEN_IFMT ifmt_not ATTRIBUTE_UNUSED = {
   1968   32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   1969 };
   1970 
   1971 static const CGEN_IFMT ifmt_subi ATTRIBUTE_UNUSED = {
   1972   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   1973 };
   1974 
   1975 static const CGEN_IFMT ifmt_m_sub ATTRIBUTE_UNUSED = {
   1976   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   1977 };
   1978 
   1979 static const CGEN_IFMT ifmt_m_subu ATTRIBUTE_UNUSED = {
   1980   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   1981 };
   1982 
   1983 static const CGEN_IFMT ifmt_sb_base_0 ATTRIBUTE_UNUSED = {
   1984   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   1985 };
   1986 
   1987 static const CGEN_IFMT ifmt_sh_base_0 ATTRIBUTE_UNUSED = {
   1988   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   1989 };
   1990 
   1991 static const CGEN_IFMT ifmt_sw_base_0 ATTRIBUTE_UNUSED = {
   1992   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   1993 };
   1994 
   1995 static const CGEN_IFMT ifmt_m_xor ATTRIBUTE_UNUSED = {
   1996   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   1997 };
   1998 
   1999 static const CGEN_IFMT ifmt_ldw_base_0 ATTRIBUTE_UNUSED = {
   2000   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   2001 };
   2002 
   2003 static const CGEN_IFMT ifmt_sdw_base_0 ATTRIBUTE_UNUSED = {
   2004   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
   2005 };
   2006 
   2007 static const CGEN_IFMT ifmt_m_avail ATTRIBUTE_UNUSED = {
   2008   32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2009 };
   2010 
   2011 static const CGEN_IFMT ifmt_m_cam36 ATTRIBUTE_UNUSED = {
   2012   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 } }
   2013 };
   2014 
   2015 static const CGEN_IFMT ifmt_m_cam72 ATTRIBUTE_UNUSED = {
   2016   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 } }
   2017 };
   2018 
   2019 static const CGEN_IFMT ifmt_m_cam144 ATTRIBUTE_UNUSED = {
   2020   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 } }
   2021 };
   2022 
   2023 static const CGEN_IFMT ifmt_m_cam288 ATTRIBUTE_UNUSED = {
   2024   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 } }
   2025 };
   2026 
   2027 static const CGEN_IFMT ifmt_m_cm32read ATTRIBUTE_UNUSED = {
   2028   32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2029 };
   2030 
   2031 static const CGEN_IFMT ifmt_m_cm64read ATTRIBUTE_UNUSED = {
   2032   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 } }
   2033 };
   2034 
   2035 static const CGEN_IFMT ifmt_m_cm32mlog ATTRIBUTE_UNUSED = {
   2036   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 } }
   2037 };
   2038 
   2039 static const CGEN_IFMT ifmt_m_cm32and ATTRIBUTE_UNUSED = {
   2040   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 } }
   2041 };
   2042 
   2043 static const CGEN_IFMT ifmt_m_cm32andn ATTRIBUTE_UNUSED = {
   2044   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 } }
   2045 };
   2046 
   2047 static const CGEN_IFMT ifmt_m_cm32or ATTRIBUTE_UNUSED = {
   2048   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 } }
   2049 };
   2050 
   2051 static const CGEN_IFMT ifmt_m_cm32ra ATTRIBUTE_UNUSED = {
   2052   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2053 };
   2054 
   2055 static const CGEN_IFMT ifmt_m_cm32rd ATTRIBUTE_UNUSED = {
   2056   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 } }
   2057 };
   2058 
   2059 static const CGEN_IFMT ifmt_m_cm32ri ATTRIBUTE_UNUSED = {
   2060   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 } }
   2061 };
   2062 
   2063 static const CGEN_IFMT ifmt_m_cm32rs ATTRIBUTE_UNUSED = {
   2064   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2065 };
   2066 
   2067 static const CGEN_IFMT ifmt_m_cm32sa ATTRIBUTE_UNUSED = {
   2068   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 } }
   2069 };
   2070 
   2071 static const CGEN_IFMT ifmt_m_cm32sd ATTRIBUTE_UNUSED = {
   2072   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 } }
   2073 };
   2074 
   2075 static const CGEN_IFMT ifmt_m_cm32si ATTRIBUTE_UNUSED = {
   2076   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 } }
   2077 };
   2078 
   2079 static const CGEN_IFMT ifmt_m_cm32ss ATTRIBUTE_UNUSED = {
   2080   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 } }
   2081 };
   2082 
   2083 static const CGEN_IFMT ifmt_m_cm32xor ATTRIBUTE_UNUSED = {
   2084   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 } }
   2085 };
   2086 
   2087 static const CGEN_IFMT ifmt_m_cm64clr ATTRIBUTE_UNUSED = {
   2088   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 } }
   2089 };
   2090 
   2091 static const CGEN_IFMT ifmt_m_cm64ra ATTRIBUTE_UNUSED = {
   2092   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 } }
   2093 };
   2094 
   2095 static const CGEN_IFMT ifmt_m_cm64rd ATTRIBUTE_UNUSED = {
   2096   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 } }
   2097 };
   2098 
   2099 static const CGEN_IFMT ifmt_m_cm64ri ATTRIBUTE_UNUSED = {
   2100   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 } }
   2101 };
   2102 
   2103 static const CGEN_IFMT ifmt_m_cm64ria2 ATTRIBUTE_UNUSED = {
   2104   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 } }
   2105 };
   2106 
   2107 static const CGEN_IFMT ifmt_m_cm64rs ATTRIBUTE_UNUSED = {
   2108   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 } }
   2109 };
   2110 
   2111 static const CGEN_IFMT ifmt_m_cm64sa ATTRIBUTE_UNUSED = {
   2112   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 } }
   2113 };
   2114 
   2115 static const CGEN_IFMT ifmt_m_cm64sd ATTRIBUTE_UNUSED = {
   2116   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 } }
   2117 };
   2118 
   2119 static const CGEN_IFMT ifmt_m_cm64si ATTRIBUTE_UNUSED = {
   2120   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 } }
   2121 };
   2122 
   2123 static const CGEN_IFMT ifmt_m_cm64sia2 ATTRIBUTE_UNUSED = {
   2124   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 } }
   2125 };
   2126 
   2127 static const CGEN_IFMT ifmt_m_cm64ss ATTRIBUTE_UNUSED = {
   2128   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 } }
   2129 };
   2130 
   2131 static const CGEN_IFMT ifmt_m_cm128ria2 ATTRIBUTE_UNUSED = {
   2132   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 } }
   2133 };
   2134 
   2135 static const CGEN_IFMT ifmt_m_cm128ria3 ATTRIBUTE_UNUSED = {
   2136   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 } }
   2137 };
   2138 
   2139 static const CGEN_IFMT ifmt_m_cm128ria4 ATTRIBUTE_UNUSED = {
   2140   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 } }
   2141 };
   2142 
   2143 static const CGEN_IFMT ifmt_m_cm128sia2 ATTRIBUTE_UNUSED = {
   2144   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 } }
   2145 };
   2146 
   2147 static const CGEN_IFMT ifmt_m_cm128sia3 ATTRIBUTE_UNUSED = {
   2148   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 } }
   2149 };
   2150 
   2151 static const CGEN_IFMT ifmt_m_cm128sia4 ATTRIBUTE_UNUSED = {
   2152   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 } }
   2153 };
   2154 
   2155 static const CGEN_IFMT ifmt_m_cmphdr ATTRIBUTE_UNUSED = {
   2156   32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2157 };
   2158 
   2159 static const CGEN_IFMT ifmt_m_dbd ATTRIBUTE_UNUSED = {
   2160   32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2161 };
   2162 
   2163 static const CGEN_IFMT ifmt_m2_dbd ATTRIBUTE_UNUSED = {
   2164   32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2165 };
   2166 
   2167 static const CGEN_IFMT ifmt_m_dpwt ATTRIBUTE_UNUSED = {
   2168   32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2169 };
   2170 
   2171 static const CGEN_IFMT ifmt_m_free ATTRIBUTE_UNUSED = {
   2172   32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2173 };
   2174 
   2175 static const CGEN_IFMT ifmt_m_lock ATTRIBUTE_UNUSED = {
   2176   32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2177 };
   2178 
   2179 static const CGEN_IFMT ifmt_m_pkrla ATTRIBUTE_UNUSED = {
   2180   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2181 };
   2182 
   2183 static const CGEN_IFMT ifmt_m_pkrlac ATTRIBUTE_UNUSED = {
   2184   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2185 };
   2186 
   2187 static const CGEN_IFMT ifmt_m_pkrlah ATTRIBUTE_UNUSED = {
   2188   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2189 };
   2190 
   2191 static const CGEN_IFMT ifmt_m_pkrlau ATTRIBUTE_UNUSED = {
   2192   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2193 };
   2194 
   2195 static const CGEN_IFMT ifmt_m_pkrli ATTRIBUTE_UNUSED = {
   2196   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
   2197 };
   2198 
   2199 static const CGEN_IFMT ifmt_m_pkrlic ATTRIBUTE_UNUSED = {
   2200   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
   2201 };
   2202 
   2203 static const CGEN_IFMT ifmt_m_pkrlih ATTRIBUTE_UNUSED = {
   2204   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
   2205 };
   2206 
   2207 static const CGEN_IFMT ifmt_m_pkrliu ATTRIBUTE_UNUSED = {
   2208   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
   2209 };
   2210 
   2211 static const CGEN_IFMT ifmt_m_rba ATTRIBUTE_UNUSED = {
   2212   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2213 };
   2214 
   2215 static const CGEN_IFMT ifmt_m_rbal ATTRIBUTE_UNUSED = {
   2216   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2217 };
   2218 
   2219 static const CGEN_IFMT ifmt_m_rbar ATTRIBUTE_UNUSED = {
   2220   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2221 };
   2222 
   2223 static const CGEN_IFMT ifmt_m_rbi ATTRIBUTE_UNUSED = {
   2224   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
   2225 };
   2226 
   2227 static const CGEN_IFMT ifmt_m_rbil ATTRIBUTE_UNUSED = {
   2228   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
   2229 };
   2230 
   2231 static const CGEN_IFMT ifmt_m_rbir ATTRIBUTE_UNUSED = {
   2232   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
   2233 };
   2234 
   2235 static const CGEN_IFMT ifmt_m_swwr ATTRIBUTE_UNUSED = {
   2236   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2237 };
   2238 
   2239 static const CGEN_IFMT ifmt_m_swwru ATTRIBUTE_UNUSED = {
   2240   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2241 };
   2242 
   2243 static const CGEN_IFMT ifmt_m_tstod ATTRIBUTE_UNUSED = {
   2244   32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2245 };
   2246 
   2247 static const CGEN_IFMT ifmt_m_unlk ATTRIBUTE_UNUSED = {
   2248   32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2249 };
   2250 
   2251 static const CGEN_IFMT ifmt_m_wba ATTRIBUTE_UNUSED = {
   2252   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2253 };
   2254 
   2255 static const CGEN_IFMT ifmt_m_wbac ATTRIBUTE_UNUSED = {
   2256   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2257 };
   2258 
   2259 static const CGEN_IFMT ifmt_m_wbau ATTRIBUTE_UNUSED = {
   2260   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
   2261 };
   2262 
   2263 static const CGEN_IFMT ifmt_m_wbi ATTRIBUTE_UNUSED = {
   2264   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
   2265 };
   2266 
   2267 static const CGEN_IFMT ifmt_m_wbic ATTRIBUTE_UNUSED = {
   2268   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
   2269 };
   2270 
   2271 static const CGEN_IFMT ifmt_m_wbiu ATTRIBUTE_UNUSED = {
   2272   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
   2273 };
   2274 
   2275 #undef F
   2276 
   2277 /* Each non-simple macro entry points to an array of expansion possibilities.  */
   2278 
   2279 #define A(a) (1 << CGEN_INSN_##a)
   2280 #define OPERAND(op) IQ2000_OPERAND_##op
   2281 #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
   2282 #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
   2283 
   2284 /* The macro instruction table.  */
   2285 
   2286 static const CGEN_IBASE iq2000_cgen_macro_insn_table[] =
   2287 {
   2288 /* nop */
   2289   {
   2290     -1, "nop", "nop", 32,
   2291     { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2292   },
   2293 /* li $rs,$imm */
   2294   {
   2295     -1, "li", "li", 32,
   2296     { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2297   },
   2298 /* move $rd,$rt */
   2299   {
   2300     -1, "move", "move", 32,
   2301     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2302   },
   2303 /* lb $rt,$lo16 */
   2304   {
   2305     -1, "lb-base-0", "lb", 32,
   2306     { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2307   },
   2308 /* lbu $rt,$lo16 */
   2309   {
   2310     -1, "lbu-base-0", "lbu", 32,
   2311     { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2312   },
   2313 /* lh $rt,$lo16 */
   2314   {
   2315     -1, "lh-base-0", "lh", 32,
   2316     { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2317   },
   2318 /* lw $rt,$lo16 */
   2319   {
   2320     -1, "lw-base-0", "lw", 32,
   2321     { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2322   },
   2323 /* add $rt,$rs,$lo16 */
   2324   {
   2325     -1, "m-add", "add", 32,
   2326     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2327   },
   2328 /* addu $rt,$rs,$lo16 */
   2329   {
   2330     -1, "m-addu", "addu", 32,
   2331     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2332   },
   2333 /* and $rt,$rs,$lo16 */
   2334   {
   2335     -1, "m-and", "and", 32,
   2336     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2337   },
   2338 /* j $rs */
   2339   {
   2340     -1, "m-j", "j", 32,
   2341     { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2342   },
   2343 /* or $rt,$rs,$lo16 */
   2344   {
   2345     -1, "m-or", "or", 32,
   2346     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2347   },
   2348 /* sll $rd,$rt,$rs */
   2349   {
   2350     -1, "m-sll", "sll", 32,
   2351     { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2352   },
   2353 /* slt $rt,$rs,$imm */
   2354   {
   2355     -1, "m-slt", "slt", 32,
   2356     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2357   },
   2358 /* sltu $rt,$rs,$imm */
   2359   {
   2360     -1, "m-sltu", "sltu", 32,
   2361     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2362   },
   2363 /* sra $rd,$rt,$rs */
   2364   {
   2365     -1, "m-sra", "sra", 32,
   2366     { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2367   },
   2368 /* srl $rd,$rt,$rs */
   2369   {
   2370     -1, "m-srl", "srl", 32,
   2371     { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2372   },
   2373 /* not $rd,$rt */
   2374   {
   2375     -1, "not", "not", 32,
   2376     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2377   },
   2378 /* subi $rt,$rs,$mlo16 */
   2379   {
   2380     -1, "subi", "subi", 32,
   2381     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2382   },
   2383 /* sub $rt,$rs,$mlo16 */
   2384   {
   2385     -1, "m-sub", "sub", 32,
   2386     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2387   },
   2388 /* subu $rt,$rs,$mlo16 */
   2389   {
   2390     -1, "m-subu", "subu", 32,
   2391     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2392   },
   2393 /* sb $rt,$lo16 */
   2394   {
   2395     -1, "sb-base-0", "sb", 32,
   2396     { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2397   },
   2398 /* sh $rt,$lo16 */
   2399   {
   2400     -1, "sh-base-0", "sh", 32,
   2401     { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2402   },
   2403 /* sw $rt,$lo16 */
   2404   {
   2405     -1, "sw-base-0", "sw", 32,
   2406     { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2407   },
   2408 /* xor $rt,$rs,$lo16 */
   2409   {
   2410     -1, "m-xor", "xor", 32,
   2411     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   2412   },
   2413 /* ldw $rt,$lo16 */
   2414   {
   2415     -1, "ldw-base-0", "ldw", 32,
   2416     { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(LOAD_DELAY)|A(EVEN_REG_NUM)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
   2417   },
   2418 /* sdw $rt,$lo16 */
   2419   {
   2420     -1, "sdw-base-0", "sdw", 32,
   2421     { 0|A(NO_DIS)|A(USES_RT)|A(EVEN_REG_NUM)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
   2422   },
   2423 /* avail */
   2424   {
   2425     -1, "m-avail", "avail", 32,
   2426     { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2427   },
   2428 /* cam36 $rd,$rt,${cam-z} */
   2429   {
   2430     -1, "m-cam36", "cam36", 32,
   2431     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2432   },
   2433 /* cam72 $rd,$rt,${cam-z} */
   2434   {
   2435     -1, "m-cam72", "cam72", 32,
   2436     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2437   },
   2438 /* cam144 $rd,$rt,${cam-z} */
   2439   {
   2440     -1, "m-cam144", "cam144", 32,
   2441     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2442   },
   2443 /* cam288 $rd,$rt,${cam-z} */
   2444   {
   2445     -1, "m-cam288", "cam288", 32,
   2446     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2447   },
   2448 /* cm32read $rd,$rt */
   2449   {
   2450     -1, "m-cm32read", "cm32read", 32,
   2451     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2452   },
   2453 /* cm64read $rd,$rt */
   2454   {
   2455     -1, "m-cm64read", "cm64read", 32,
   2456     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2457   },
   2458 /* cm32mlog $rs,$rt */
   2459   {
   2460     -1, "m-cm32mlog", "cm32mlog", 32,
   2461     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2462   },
   2463 /* cm32and $rs,$rt */
   2464   {
   2465     -1, "m-cm32and", "cm32and", 32,
   2466     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2467   },
   2468 /* cm32andn $rs,$rt */
   2469   {
   2470     -1, "m-cm32andn", "cm32andn", 32,
   2471     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2472   },
   2473 /* cm32or $rs,$rt */
   2474   {
   2475     -1, "m-cm32or", "cm32or", 32,
   2476     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2477   },
   2478 /* cm32ra $rs,$rt */
   2479   {
   2480     -1, "m-cm32ra", "cm32ra", 32,
   2481     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2482   },
   2483 /* cm32rd $rt */
   2484   {
   2485     -1, "m-cm32rd", "cm32rd", 32,
   2486     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2487   },
   2488 /* cm32ri $rt */
   2489   {
   2490     -1, "m-cm32ri", "cm32ri", 32,
   2491     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2492   },
   2493 /* cm32rs $rs,$rt */
   2494   {
   2495     -1, "m-cm32rs", "cm32rs", 32,
   2496     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2497   },
   2498 /* cm32sa $rs,$rt */
   2499   {
   2500     -1, "m-cm32sa", "cm32sa", 32,
   2501     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2502   },
   2503 /* cm32sd $rt */
   2504   {
   2505     -1, "m-cm32sd", "cm32sd", 32,
   2506     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2507   },
   2508 /* cm32si $rt */
   2509   {
   2510     -1, "m-cm32si", "cm32si", 32,
   2511     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2512   },
   2513 /* cm32ss $rs,$rt */
   2514   {
   2515     -1, "m-cm32ss", "cm32ss", 32,
   2516     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2517   },
   2518 /* cm32xor $rs,$rt */
   2519   {
   2520     -1, "m-cm32xor", "cm32xor", 32,
   2521     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2522   },
   2523 /* cm64clr $rt */
   2524   {
   2525     -1, "m-cm64clr", "cm64clr", 32,
   2526     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2527   },
   2528 /* cm64ra $rs,$rt */
   2529   {
   2530     -1, "m-cm64ra", "cm64ra", 32,
   2531     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2532   },
   2533 /* cm64rd $rt */
   2534   {
   2535     -1, "m-cm64rd", "cm64rd", 32,
   2536     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2537   },
   2538 /* cm64ri $rt */
   2539   {
   2540     -1, "m-cm64ri", "cm64ri", 32,
   2541     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2542   },
   2543 /* cm64ria2 $rs,$rt */
   2544   {
   2545     -1, "m-cm64ria2", "cm64ria2", 32,
   2546     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2547   },
   2548 /* cm64rs $rs,$rt */
   2549   {
   2550     -1, "m-cm64rs", "cm64rs", 32,
   2551     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2552   },
   2553 /* cm64sa $rs,$rt */
   2554   {
   2555     -1, "m-cm64sa", "cm64sa", 32,
   2556     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2557   },
   2558 /* cm64sd $rt */
   2559   {
   2560     -1, "m-cm64sd", "cm64sd", 32,
   2561     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2562   },
   2563 /* cm64si $rt */
   2564   {
   2565     -1, "m-cm64si", "cm64si", 32,
   2566     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2567   },
   2568 /* cm64sia2 $rs,$rt */
   2569   {
   2570     -1, "m-cm64sia2", "cm64sia2", 32,
   2571     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2572   },
   2573 /* cm64ss $rs,$rt */
   2574   {
   2575     -1, "m-cm64ss", "cm64ss", 32,
   2576     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2577   },
   2578 /* cm128ria2 $rs,$rt */
   2579   {
   2580     -1, "m-cm128ria2", "cm128ria2", 32,
   2581     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2582   },
   2583 /* cm128ria3 $rs,$rt,${cm-3z} */
   2584   {
   2585     -1, "m-cm128ria3", "cm128ria3", 32,
   2586     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2587   },
   2588 /* cm128ria4 $rs,$rt,${cm-4z} */
   2589   {
   2590     -1, "m-cm128ria4", "cm128ria4", 32,
   2591     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2592   },
   2593 /* cm128sia2 $rs,$rt */
   2594   {
   2595     -1, "m-cm128sia2", "cm128sia2", 32,
   2596     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2597   },
   2598 /* cm128sia3 $rs,$rt,${cm-3z} */
   2599   {
   2600     -1, "m-cm128sia3", "cm128sia3", 32,
   2601     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2602   },
   2603 /* cm128sia4 $rs,$rt,${cm-4z} */
   2604   {
   2605     -1, "m-cm128sia4", "cm128sia4", 32,
   2606     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2607   },
   2608 /* cmphdr */
   2609   {
   2610     -1, "m-cmphdr", "cmphdr", 32,
   2611     { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2612   },
   2613 /* dbd $rd,$rt */
   2614   {
   2615     -1, "m-dbd", "dbd", 32,
   2616     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2617   },
   2618 /* dbd $rt */
   2619   {
   2620     -1, "m2-dbd", "dbd", 32,
   2621     { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2622   },
   2623 /* dpwt $rs */
   2624   {
   2625     -1, "m-dpwt", "dpwt", 32,
   2626     { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2627   },
   2628 /* free $rs */
   2629   {
   2630     -1, "m-free", "free", 32,
   2631     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2632   },
   2633 /* lock $rt */
   2634   {
   2635     -1, "m-lock", "lock", 32,
   2636     { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2637   },
   2638 /* pkrla $rs,$rt */
   2639   {
   2640     -1, "m-pkrla", "pkrla", 32,
   2641     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2642   },
   2643 /* pkrlac $rs,$rt */
   2644   {
   2645     -1, "m-pkrlac", "pkrlac", 32,
   2646     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2647   },
   2648 /* pkrlah $rs,$rt */
   2649   {
   2650     -1, "m-pkrlah", "pkrlah", 32,
   2651     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2652   },
   2653 /* pkrlau $rs,$rt */
   2654   {
   2655     -1, "m-pkrlau", "pkrlau", 32,
   2656     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2657   },
   2658 /* pkrli $rs,$rt,$bytecount */
   2659   {
   2660     -1, "m-pkrli", "pkrli", 32,
   2661     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2662   },
   2663 /* pkrlic $rs,$rt,$bytecount */
   2664   {
   2665     -1, "m-pkrlic", "pkrlic", 32,
   2666     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2667   },
   2668 /* pkrlih $rs,$rt,$bytecount */
   2669   {
   2670     -1, "m-pkrlih", "pkrlih", 32,
   2671     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2672   },
   2673 /* pkrliu $rs,$rt,$bytecount */
   2674   {
   2675     -1, "m-pkrliu", "pkrliu", 32,
   2676     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2677   },
   2678 /* rba $rs,$rt */
   2679   {
   2680     -1, "m-rba", "rba", 32,
   2681     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2682   },
   2683 /* rbal $rs,$rt */
   2684   {
   2685     -1, "m-rbal", "rbal", 32,
   2686     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2687   },
   2688 /* rbar $rs,$rt */
   2689   {
   2690     -1, "m-rbar", "rbar", 32,
   2691     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2692   },
   2693 /* rbi $rs,$rt,$bytecount */
   2694   {
   2695     -1, "m-rbi", "rbi", 32,
   2696     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2697   },
   2698 /* rbil $rs,$rt,$bytecount */
   2699   {
   2700     -1, "m-rbil", "rbil", 32,
   2701     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2702   },
   2703 /* rbir $rs,$rt,$bytecount */
   2704   {
   2705     -1, "m-rbir", "rbir", 32,
   2706     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2707   },
   2708 /* swwr $rs,$rt */
   2709   {
   2710     -1, "m-swwr", "swwr", 32,
   2711     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2712   },
   2713 /* swwru $rs,$rt */
   2714   {
   2715     -1, "m-swwru", "swwru", 32,
   2716     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2717   },
   2718 /* tstod $rs */
   2719   {
   2720     -1, "m-tstod", "tstod", 32,
   2721     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2722   },
   2723 /* unlk $rt */
   2724   {
   2725     -1, "m-unlk", "unlk", 32,
   2726     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2727   },
   2728 /* wba $rs,$rt */
   2729   {
   2730     -1, "m-wba", "wba", 32,
   2731     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2732   },
   2733 /* wbac $rs,$rt */
   2734   {
   2735     -1, "m-wbac", "wbac", 32,
   2736     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2737   },
   2738 /* wbau $rs,$rt */
   2739   {
   2740     -1, "m-wbau", "wbau", 32,
   2741     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2742   },
   2743 /* wbi $rs,$rt,$bytecount */
   2744   {
   2745     -1, "m-wbi", "wbi", 32,
   2746     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2747   },
   2748 /* wbic $rs,$rt,$bytecount */
   2749   {
   2750     -1, "m-wbic", "wbic", 32,
   2751     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2752   },
   2753 /* wbiu $rs,$rt,$bytecount */
   2754   {
   2755     -1, "m-wbiu", "wbiu", 32,
   2756     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   2757   },
   2758 };
   2759 
   2760 /* The macro instruction opcode table.  */
   2761 
   2762 static const CGEN_OPCODE iq2000_cgen_macro_insn_opcode_table[] =
   2763 {
   2764 /* nop */
   2765   {
   2766     { 0, 0, 0, 0 },
   2767     { { MNEM, 0 } },
   2768     & ifmt_nop, { 0x0 }
   2769   },
   2770 /* li $rs,$imm */
   2771   {
   2772     { 0, 0, 0, 0 },
   2773     { { MNEM, ' ', OP (RS), ',', OP (IMM), 0 } },
   2774     & ifmt_li, { 0x34000000 }
   2775   },
   2776 /* move $rd,$rt */
   2777   {
   2778     { 0, 0, 0, 0 },
   2779     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   2780     & ifmt_move, { 0x25 }
   2781   },
   2782 /* lb $rt,$lo16 */
   2783   {
   2784     { 0, 0, 0, 0 },
   2785     { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
   2786     & ifmt_lb_base_0, { 0x80000000 }
   2787   },
   2788 /* lbu $rt,$lo16 */
   2789   {
   2790     { 0, 0, 0, 0 },
   2791     { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
   2792     & ifmt_lbu_base_0, { 0x90000000 }
   2793   },
   2794 /* lh $rt,$lo16 */
   2795   {
   2796     { 0, 0, 0, 0 },
   2797     { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
   2798     & ifmt_lh_base_0, { 0x84000000 }
   2799   },
   2800 /* lw $rt,$lo16 */
   2801   {
   2802     { 0, 0, 0, 0 },
   2803     { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
   2804     & ifmt_lw_base_0, { 0x8c000000 }
   2805   },
   2806 /* add $rt,$rs,$lo16 */
   2807   {
   2808     { 0, 0, 0, 0 },
   2809     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
   2810     & ifmt_m_add, { 0x20000000 }
   2811   },
   2812 /* addu $rt,$rs,$lo16 */
   2813   {
   2814     { 0, 0, 0, 0 },
   2815     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
   2816     & ifmt_m_addu, { 0x24000000 }
   2817   },
   2818 /* and $rt,$rs,$lo16 */
   2819   {
   2820     { 0, 0, 0, 0 },
   2821     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
   2822     & ifmt_m_and, { 0x30000000 }
   2823   },
   2824 /* j $rs */
   2825   {
   2826     { 0, 0, 0, 0 },
   2827     { { MNEM, ' ', OP (RS), 0 } },
   2828     & ifmt_m_j, { 0x8 }
   2829   },
   2830 /* or $rt,$rs,$lo16 */
   2831   {
   2832     { 0, 0, 0, 0 },
   2833     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
   2834     & ifmt_m_or, { 0x34000000 }
   2835   },
   2836 /* sll $rd,$rt,$rs */
   2837   {
   2838     { 0, 0, 0, 0 },
   2839     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
   2840     & ifmt_m_sll, { 0x4 }
   2841   },
   2842 /* slt $rt,$rs,$imm */
   2843   {
   2844     { 0, 0, 0, 0 },
   2845     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
   2846     & ifmt_m_slt, { 0x28000000 }
   2847   },
   2848 /* sltu $rt,$rs,$imm */
   2849   {
   2850     { 0, 0, 0, 0 },
   2851     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
   2852     & ifmt_m_sltu, { 0x2c000000 }
   2853   },
   2854 /* sra $rd,$rt,$rs */
   2855   {
   2856     { 0, 0, 0, 0 },
   2857     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
   2858     & ifmt_m_sra, { 0x7 }
   2859   },
   2860 /* srl $rd,$rt,$rs */
   2861   {
   2862     { 0, 0, 0, 0 },
   2863     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
   2864     & ifmt_m_srl, { 0x6 }
   2865   },
   2866 /* not $rd,$rt */
   2867   {
   2868     { 0, 0, 0, 0 },
   2869     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   2870     & ifmt_not, { 0x27 }
   2871   },
   2872 /* subi $rt,$rs,$mlo16 */
   2873   {
   2874     { 0, 0, 0, 0 },
   2875     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
   2876     & ifmt_subi, { 0x24000000 }
   2877   },
   2878 /* sub $rt,$rs,$mlo16 */
   2879   {
   2880     { 0, 0, 0, 0 },
   2881     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
   2882     & ifmt_m_sub, { 0x24000000 }
   2883   },
   2884 /* subu $rt,$rs,$mlo16 */
   2885   {
   2886     { 0, 0, 0, 0 },
   2887     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
   2888     & ifmt_m_subu, { 0x24000000 }
   2889   },
   2890 /* sb $rt,$lo16 */
   2891   {
   2892     { 0, 0, 0, 0 },
   2893     { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
   2894     & ifmt_sb_base_0, { 0xa0000000 }
   2895   },
   2896 /* sh $rt,$lo16 */
   2897   {
   2898     { 0, 0, 0, 0 },
   2899     { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
   2900     & ifmt_sh_base_0, { 0xa4000000 }
   2901   },
   2902 /* sw $rt,$lo16 */
   2903   {
   2904     { 0, 0, 0, 0 },
   2905     { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
   2906     & ifmt_sw_base_0, { 0xac000000 }
   2907   },
   2908 /* xor $rt,$rs,$lo16 */
   2909   {
   2910     { 0, 0, 0, 0 },
   2911     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
   2912     & ifmt_m_xor, { 0x38000000 }
   2913   },
   2914 /* ldw $rt,$lo16 */
   2915   {
   2916     { 0, 0, 0, 0 },
   2917     { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
   2918     & ifmt_ldw_base_0, { 0xc0000000 }
   2919   },
   2920 /* sdw $rt,$lo16 */
   2921   {
   2922     { 0, 0, 0, 0 },
   2923     { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
   2924     & ifmt_sdw_base_0, { 0xe0000000 }
   2925   },
   2926 /* avail */
   2927   {
   2928     { 0, 0, 0, 0 },
   2929     { { MNEM, 0 } },
   2930     & ifmt_m_avail, { 0x4c000024 }
   2931   },
   2932 /* cam36 $rd,$rt,${cam-z} */
   2933   {
   2934     { 0, 0, 0, 0 },
   2935     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
   2936     & ifmt_m_cam36, { 0x4c000400 }
   2937   },
   2938 /* cam72 $rd,$rt,${cam-z} */
   2939   {
   2940     { 0, 0, 0, 0 },
   2941     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
   2942     & ifmt_m_cam72, { 0x4c000440 }
   2943   },
   2944 /* cam144 $rd,$rt,${cam-z} */
   2945   {
   2946     { 0, 0, 0, 0 },
   2947     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
   2948     & ifmt_m_cam144, { 0x4c000480 }
   2949   },
   2950 /* cam288 $rd,$rt,${cam-z} */
   2951   {
   2952     { 0, 0, 0, 0 },
   2953     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
   2954     & ifmt_m_cam288, { 0x4c0004c0 }
   2955   },
   2956 /* cm32read $rd,$rt */
   2957   {
   2958     { 0, 0, 0, 0 },
   2959     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   2960     & ifmt_m_cm32read, { 0x4c0000b0 }
   2961   },
   2962 /* cm64read $rd,$rt */
   2963   {
   2964     { 0, 0, 0, 0 },
   2965     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   2966     & ifmt_m_cm64read, { 0x4c000090 }
   2967   },
   2968 /* cm32mlog $rs,$rt */
   2969   {
   2970     { 0, 0, 0, 0 },
   2971     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   2972     & ifmt_m_cm32mlog, { 0x4c0000aa }
   2973   },
   2974 /* cm32and $rs,$rt */
   2975   {
   2976     { 0, 0, 0, 0 },
   2977     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   2978     & ifmt_m_cm32and, { 0x4c0000ab }
   2979   },
   2980 /* cm32andn $rs,$rt */
   2981   {
   2982     { 0, 0, 0, 0 },
   2983     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   2984     & ifmt_m_cm32andn, { 0x4c0000a3 }
   2985   },
   2986 /* cm32or $rs,$rt */
   2987   {
   2988     { 0, 0, 0, 0 },
   2989     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   2990     & ifmt_m_cm32or, { 0x4c0000aa }
   2991   },
   2992 /* cm32ra $rs,$rt */
   2993   {
   2994     { 0, 0, 0, 0 },
   2995     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   2996     & ifmt_m_cm32ra, { 0x4c0000b0 }
   2997   },
   2998 /* cm32rd $rt */
   2999   {
   3000     { 0, 0, 0, 0 },
   3001     { { MNEM, ' ', OP (RT), 0 } },
   3002     & ifmt_m_cm32rd, { 0x4c0000a1 }
   3003   },
   3004 /* cm32ri $rt */
   3005   {
   3006     { 0, 0, 0, 0 },
   3007     { { MNEM, ' ', OP (RT), 0 } },
   3008     & ifmt_m_cm32ri, { 0x4c0000a4 }
   3009   },
   3010 /* cm32rs $rs,$rt */
   3011   {
   3012     { 0, 0, 0, 0 },
   3013     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3014     & ifmt_m_cm32rs, { 0x4c0000a0 }
   3015   },
   3016 /* cm32sa $rs,$rt */
   3017   {
   3018     { 0, 0, 0, 0 },
   3019     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3020     & ifmt_m_cm32sa, { 0x4c0000b8 }
   3021   },
   3022 /* cm32sd $rt */
   3023   {
   3024     { 0, 0, 0, 0 },
   3025     { { MNEM, ' ', OP (RT), 0 } },
   3026     & ifmt_m_cm32sd, { 0x4c0000a9 }
   3027   },
   3028 /* cm32si $rt */
   3029   {
   3030     { 0, 0, 0, 0 },
   3031     { { MNEM, ' ', OP (RT), 0 } },
   3032     & ifmt_m_cm32si, { 0x4c0000ac }
   3033   },
   3034 /* cm32ss $rs,$rt */
   3035   {
   3036     { 0, 0, 0, 0 },
   3037     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3038     & ifmt_m_cm32ss, { 0x4c0000a8 }
   3039   },
   3040 /* cm32xor $rs,$rt */
   3041   {
   3042     { 0, 0, 0, 0 },
   3043     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3044     & ifmt_m_cm32xor, { 0x4c0000a2 }
   3045   },
   3046 /* cm64clr $rt */
   3047   {
   3048     { 0, 0, 0, 0 },
   3049     { { MNEM, ' ', OP (RT), 0 } },
   3050     & ifmt_m_cm64clr, { 0x4c000085 }
   3051   },
   3052 /* cm64ra $rs,$rt */
   3053   {
   3054     { 0, 0, 0, 0 },
   3055     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3056     & ifmt_m_cm64ra, { 0x4c000090 }
   3057   },
   3058 /* cm64rd $rt */
   3059   {
   3060     { 0, 0, 0, 0 },
   3061     { { MNEM, ' ', OP (RT), 0 } },
   3062     & ifmt_m_cm64rd, { 0x4c000081 }
   3063   },
   3064 /* cm64ri $rt */
   3065   {
   3066     { 0, 0, 0, 0 },
   3067     { { MNEM, ' ', OP (RT), 0 } },
   3068     & ifmt_m_cm64ri, { 0x4c000084 }
   3069   },
   3070 /* cm64ria2 $rs,$rt */
   3071   {
   3072     { 0, 0, 0, 0 },
   3073     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3074     & ifmt_m_cm64ria2, { 0x4c000094 }
   3075   },
   3076 /* cm64rs $rs,$rt */
   3077   {
   3078     { 0, 0, 0, 0 },
   3079     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3080     & ifmt_m_cm64rs, { 0x4c000080 }
   3081   },
   3082 /* cm64sa $rs,$rt */
   3083   {
   3084     { 0, 0, 0, 0 },
   3085     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3086     & ifmt_m_cm64sa, { 0x4c000098 }
   3087   },
   3088 /* cm64sd $rt */
   3089   {
   3090     { 0, 0, 0, 0 },
   3091     { { MNEM, ' ', OP (RT), 0 } },
   3092     & ifmt_m_cm64sd, { 0x4c000089 }
   3093   },
   3094 /* cm64si $rt */
   3095   {
   3096     { 0, 0, 0, 0 },
   3097     { { MNEM, ' ', OP (RT), 0 } },
   3098     & ifmt_m_cm64si, { 0x4c00008c }
   3099   },
   3100 /* cm64sia2 $rs,$rt */
   3101   {
   3102     { 0, 0, 0, 0 },
   3103     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3104     & ifmt_m_cm64sia2, { 0x4c00009c }
   3105   },
   3106 /* cm64ss $rs,$rt */
   3107   {
   3108     { 0, 0, 0, 0 },
   3109     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3110     & ifmt_m_cm64ss, { 0x4c000088 }
   3111   },
   3112 /* cm128ria2 $rs,$rt */
   3113   {
   3114     { 0, 0, 0, 0 },
   3115     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3116     & ifmt_m_cm128ria2, { 0x4c000095 }
   3117   },
   3118 /* cm128ria3 $rs,$rt,${cm-3z} */
   3119   {
   3120     { 0, 0, 0, 0 },
   3121     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
   3122     & ifmt_m_cm128ria3, { 0x4c000090 }
   3123   },
   3124 /* cm128ria4 $rs,$rt,${cm-4z} */
   3125   {
   3126     { 0, 0, 0, 0 },
   3127     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
   3128     & ifmt_m_cm128ria4, { 0x4c0000b0 }
   3129   },
   3130 /* cm128sia2 $rs,$rt */
   3131   {
   3132     { 0, 0, 0, 0 },
   3133     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3134     & ifmt_m_cm128sia2, { 0x4c00009d }
   3135   },
   3136 /* cm128sia3 $rs,$rt,${cm-3z} */
   3137   {
   3138     { 0, 0, 0, 0 },
   3139     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
   3140     & ifmt_m_cm128sia3, { 0x4c000098 }
   3141   },
   3142 /* cm128sia4 $rs,$rt,${cm-4z} */
   3143   {
   3144     { 0, 0, 0, 0 },
   3145     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
   3146     & ifmt_m_cm128sia4, { 0x4c0000b8 }
   3147   },
   3148 /* cmphdr */
   3149   {
   3150     { 0, 0, 0, 0 },
   3151     { { MNEM, 0 } },
   3152     & ifmt_m_cmphdr, { 0x4c00002c }
   3153   },
   3154 /* dbd $rd,$rt */
   3155   {
   3156     { 0, 0, 0, 0 },
   3157     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
   3158     & ifmt_m_dbd, { 0x4c000021 }
   3159   },
   3160 /* dbd $rt */
   3161   {
   3162     { 0, 0, 0, 0 },
   3163     { { MNEM, ' ', OP (RT), 0 } },
   3164     & ifmt_m2_dbd, { 0x4c000021 }
   3165   },
   3166 /* dpwt $rs */
   3167   {
   3168     { 0, 0, 0, 0 },
   3169     { { MNEM, ' ', OP (RS), 0 } },
   3170     & ifmt_m_dpwt, { 0x4c000023 }
   3171   },
   3172 /* free $rs */
   3173   {
   3174     { 0, 0, 0, 0 },
   3175     { { MNEM, ' ', OP (RS), 0 } },
   3176     & ifmt_m_free, { 0x4c000025 }
   3177   },
   3178 /* lock $rt */
   3179   {
   3180     { 0, 0, 0, 0 },
   3181     { { MNEM, ' ', OP (RT), 0 } },
   3182     & ifmt_m_lock, { 0x4c000001 }
   3183   },
   3184 /* pkrla $rs,$rt */
   3185   {
   3186     { 0, 0, 0, 0 },
   3187     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3188     & ifmt_m_pkrla, { 0x4c000028 }
   3189   },
   3190 /* pkrlac $rs,$rt */
   3191   {
   3192     { 0, 0, 0, 0 },
   3193     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3194     & ifmt_m_pkrlac, { 0x4c00002b }
   3195   },
   3196 /* pkrlah $rs,$rt */
   3197   {
   3198     { 0, 0, 0, 0 },
   3199     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3200     & ifmt_m_pkrlah, { 0x4c00002a }
   3201   },
   3202 /* pkrlau $rs,$rt */
   3203   {
   3204     { 0, 0, 0, 0 },
   3205     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3206     & ifmt_m_pkrlau, { 0x4c000029 }
   3207   },
   3208 /* pkrli $rs,$rt,$bytecount */
   3209   {
   3210     { 0, 0, 0, 0 },
   3211     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   3212     & ifmt_m_pkrli, { 0x48000000 }
   3213   },
   3214 /* pkrlic $rs,$rt,$bytecount */
   3215   {
   3216     { 0, 0, 0, 0 },
   3217     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   3218     & ifmt_m_pkrlic, { 0x48000300 }
   3219   },
   3220 /* pkrlih $rs,$rt,$bytecount */
   3221   {
   3222     { 0, 0, 0, 0 },
   3223     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   3224     & ifmt_m_pkrlih, { 0x48000200 }
   3225   },
   3226 /* pkrliu $rs,$rt,$bytecount */
   3227   {
   3228     { 0, 0, 0, 0 },
   3229     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   3230     & ifmt_m_pkrliu, { 0x48000100 }
   3231   },
   3232 /* rba $rs,$rt */
   3233   {
   3234     { 0, 0, 0, 0 },
   3235     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3236     & ifmt_m_rba, { 0x4c000008 }
   3237   },
   3238 /* rbal $rs,$rt */
   3239   {
   3240     { 0, 0, 0, 0 },
   3241     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3242     & ifmt_m_rbal, { 0x4c000009 }
   3243   },
   3244 /* rbar $rs,$rt */
   3245   {
   3246     { 0, 0, 0, 0 },
   3247     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3248     & ifmt_m_rbar, { 0x4c00000a }
   3249   },
   3250 /* rbi $rs,$rt,$bytecount */
   3251   {
   3252     { 0, 0, 0, 0 },
   3253     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   3254     & ifmt_m_rbi, { 0x4c000200 }
   3255   },
   3256 /* rbil $rs,$rt,$bytecount */
   3257   {
   3258     { 0, 0, 0, 0 },
   3259     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   3260     & ifmt_m_rbil, { 0x4c000300 }
   3261   },
   3262 /* rbir $rs,$rt,$bytecount */
   3263   {
   3264     { 0, 0, 0, 0 },
   3265     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   3266     & ifmt_m_rbir, { 0x4c000100 }
   3267   },
   3268 /* swwr $rs,$rt */
   3269   {
   3270     { 0, 0, 0, 0 },
   3271     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3272     & ifmt_m_swwr, { 0x4c000006 }
   3273   },
   3274 /* swwru $rs,$rt */
   3275   {
   3276     { 0, 0, 0, 0 },
   3277     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3278     & ifmt_m_swwru, { 0x4c000007 }
   3279   },
   3280 /* tstod $rs */
   3281   {
   3282     { 0, 0, 0, 0 },
   3283     { { MNEM, ' ', OP (RS), 0 } },
   3284     & ifmt_m_tstod, { 0x4c000027 }
   3285   },
   3286 /* unlk $rt */
   3287   {
   3288     { 0, 0, 0, 0 },
   3289     { { MNEM, ' ', OP (RT), 0 } },
   3290     & ifmt_m_unlk, { 0x4c000003 }
   3291   },
   3292 /* wba $rs,$rt */
   3293   {
   3294     { 0, 0, 0, 0 },
   3295     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3296     & ifmt_m_wba, { 0x4c000010 }
   3297   },
   3298 /* wbac $rs,$rt */
   3299   {
   3300     { 0, 0, 0, 0 },
   3301     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3302     & ifmt_m_wbac, { 0x4c000012 }
   3303   },
   3304 /* wbau $rs,$rt */
   3305   {
   3306     { 0, 0, 0, 0 },
   3307     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
   3308     & ifmt_m_wbau, { 0x4c000011 }
   3309   },
   3310 /* wbi $rs,$rt,$bytecount */
   3311   {
   3312     { 0, 0, 0, 0 },
   3313     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   3314     & ifmt_m_wbi, { 0x4c000600 }
   3315   },
   3316 /* wbic $rs,$rt,$bytecount */
   3317   {
   3318     { 0, 0, 0, 0 },
   3319     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   3320     & ifmt_m_wbic, { 0x4c000500 }
   3321   },
   3322 /* wbiu $rs,$rt,$bytecount */
   3323   {
   3324     { 0, 0, 0, 0 },
   3325     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
   3326     & ifmt_m_wbiu, { 0x4c000700 }
   3327   },
   3328 };
   3329 
   3330 #undef A
   3331 #undef OPERAND
   3332 #undef MNEM
   3333 #undef OP
   3334 
   3335 #ifndef CGEN_ASM_HASH_P
   3336 #define CGEN_ASM_HASH_P(insn) 1
   3337 #endif
   3338 
   3339 #ifndef CGEN_DIS_HASH_P
   3340 #define CGEN_DIS_HASH_P(insn) 1
   3341 #endif
   3342 
   3343 /* Return non-zero if INSN is to be added to the hash table.
   3344    Targets are free to override CGEN_{ASM,DIS}_HASH_P in the .opc file.  */
   3345 
   3346 static int
   3347 asm_hash_insn_p (const CGEN_INSN *insn ATTRIBUTE_UNUSED)
   3348 {
   3349   return CGEN_ASM_HASH_P (insn);
   3350 }
   3351 
   3352 static int
   3353 dis_hash_insn_p (const CGEN_INSN *insn)
   3354 {
   3355   /* If building the hash table and the NO-DIS attribute is present,
   3356      ignore.  */
   3357   if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_NO_DIS))
   3358     return 0;
   3359   return CGEN_DIS_HASH_P (insn);
   3360 }
   3361 
   3362 #ifndef CGEN_ASM_HASH
   3363 #define CGEN_ASM_HASH_SIZE 127
   3364 #ifdef CGEN_MNEMONIC_OPERANDS
   3365 #define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE)
   3366 #else
   3367 #define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE) /*FIXME*/
   3368 #endif
   3369 #endif
   3370 
   3371 /* It doesn't make much sense to provide a default here,
   3372    but while this is under development we do.
   3373    BUFFER is a pointer to the bytes of the insn, target order.
   3374    VALUE is the first base_insn_bitsize bits as an int in host order.  */
   3375 
   3376 #ifndef CGEN_DIS_HASH
   3377 #define CGEN_DIS_HASH_SIZE 256
   3378 #define CGEN_DIS_HASH(buf, value) (*(unsigned char *) (buf))
   3379 #endif
   3380 
   3381 /* The result is the hash value of the insn.
   3382    Targets are free to override CGEN_{ASM,DIS}_HASH in the .opc file.  */
   3383 
   3384 static unsigned int
   3385 asm_hash_insn (const char *mnem)
   3386 {
   3387   return CGEN_ASM_HASH (mnem);
   3388 }
   3389 
   3390 /* BUF is a pointer to the bytes of the insn, target order.
   3391    VALUE is the first base_insn_bitsize bits as an int in host order.  */
   3392 
   3393 static unsigned int
   3394 dis_hash_insn (const char *buf ATTRIBUTE_UNUSED,
   3395 		     CGEN_INSN_INT value ATTRIBUTE_UNUSED)
   3396 {
   3397   return CGEN_DIS_HASH (buf, value);
   3398 }
   3399 
   3400 /* Set the recorded length of the insn in the CGEN_FIELDS struct.  */
   3401 
   3402 static void
   3403 set_fields_bitsize (CGEN_FIELDS *fields, int size)
   3404 {
   3405   CGEN_FIELDS_BITSIZE (fields) = size;
   3406 }
   3407 
   3408 /* Function to call before using the operand instance table.
   3409    This plugs the opcode entries and macro instructions into the cpu table.  */
   3410 
   3411 void
   3412 iq2000_cgen_init_opcode_table (CGEN_CPU_DESC cd)
   3413 {
   3414   int i;
   3415   int num_macros = (sizeof (iq2000_cgen_macro_insn_table) /
   3416 		    sizeof (iq2000_cgen_macro_insn_table[0]));
   3417   const CGEN_IBASE *ib = & iq2000_cgen_macro_insn_table[0];
   3418   const CGEN_OPCODE *oc = & iq2000_cgen_macro_insn_opcode_table[0];
   3419   CGEN_INSN *insns = xmalloc (num_macros * sizeof (CGEN_INSN));
   3420 
   3421   /* This test has been added to avoid a warning generated
   3422      if memset is called with a third argument of value zero.  */
   3423   if (num_macros >= 1)
   3424     memset (insns, 0, num_macros * sizeof (CGEN_INSN));
   3425   for (i = 0; i < num_macros; ++i)
   3426     {
   3427       insns[i].base = &ib[i];
   3428       insns[i].opcode = &oc[i];
   3429       iq2000_cgen_build_insn_regex (& insns[i]);
   3430     }
   3431   cd->macro_insn_table.init_entries = insns;
   3432   cd->macro_insn_table.entry_size = sizeof (CGEN_IBASE);
   3433   cd->macro_insn_table.num_init_entries = num_macros;
   3434 
   3435   oc = & iq2000_cgen_insn_opcode_table[0];
   3436   insns = (CGEN_INSN *) cd->insn_table.init_entries;
   3437   for (i = 0; i < MAX_INSNS; ++i)
   3438     {
   3439       insns[i].opcode = &oc[i];
   3440       iq2000_cgen_build_insn_regex (& insns[i]);
   3441     }
   3442 
   3443   cd->sizeof_fields = sizeof (CGEN_FIELDS);
   3444   cd->set_fields_bitsize = set_fields_bitsize;
   3445 
   3446   cd->asm_hash_p = asm_hash_insn_p;
   3447   cd->asm_hash = asm_hash_insn;
   3448   cd->asm_hash_size = CGEN_ASM_HASH_SIZE;
   3449 
   3450   cd->dis_hash_p = dis_hash_insn_p;
   3451   cd->dis_hash = dis_hash_insn;
   3452   cd->dis_hash_size = CGEN_DIS_HASH_SIZE;
   3453 }
   3454