Home | History | Annotate | Download | only in opcodes
      1 /* Instruction opcode table for xc16x.
      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 "xc16x-desc.h"
     30 #include "xc16x-opc.h"
     31 #include "libiberty.h"
     32 
     33 /* -- opc.c */
     34 
     35 /* -- */
     36 /* The hash functions are recorded here to help keep assembler code out of
     37    the disassembler and vice versa.  */
     38 
     39 static int asm_hash_insn_p        (const CGEN_INSN *);
     40 static unsigned int asm_hash_insn (const char *);
     41 static int dis_hash_insn_p        (const CGEN_INSN *);
     42 static unsigned int dis_hash_insn (const char *, CGEN_INSN_INT);
     43 
     44 /* Instruction formats.  */
     45 
     46 #define F(f) & xc16x_cgen_ifld_table[XC16X_##f]
     47 static const CGEN_IFMT ifmt_empty ATTRIBUTE_UNUSED = {
     48   0, 0, 0x0, { { 0 } }
     49 };
     50 
     51 static const CGEN_IFMT ifmt_addrpof ATTRIBUTE_UNUSED = {
     52   32, 32, 0xff, { { F (F_MEMORY) }, { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
     53 };
     54 
     55 static const CGEN_IFMT ifmt_addbrpof ATTRIBUTE_UNUSED = {
     56   32, 32, 0xff, { { F (F_MEMORY) }, { F (F_REGB8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
     57 };
     58 
     59 static const CGEN_IFMT ifmt_addrpag ATTRIBUTE_UNUSED = {
     60   32, 32, 0xff, { { F (F_UIMM16) }, { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
     61 };
     62 
     63 static const CGEN_IFMT ifmt_addbrpag ATTRIBUTE_UNUSED = {
     64   32, 32, 0xff, { { F (F_UIMM16) }, { F (F_REGB8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
     65 };
     66 
     67 static const CGEN_IFMT ifmt_addrhpof ATTRIBUTE_UNUSED = {
     68   32, 32, 0xff, { { F (F_UIMM16) }, { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
     69 };
     70 
     71 static const CGEN_IFMT ifmt_addrhpof3 ATTRIBUTE_UNUSED = {
     72   16, 16, 0x8ff, { { F (F_R1) }, { F (F_OP_BIT1) }, { F (F_UIMM3) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
     73 };
     74 
     75 static const CGEN_IFMT ifmt_addbrhpag3 ATTRIBUTE_UNUSED = {
     76   16, 16, 0x8ff, { { F (F_R1) }, { F (F_OP_BIT1) }, { F (F_UIMM3) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
     77 };
     78 
     79 static const CGEN_IFMT ifmt_addrbhpof ATTRIBUTE_UNUSED = {
     80   32, 32, 0xff0000ff, { { F (F_OP_BIT8) }, { F (F_UIMM8) }, { F (F_REGB8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
     81 };
     82 
     83 static const CGEN_IFMT ifmt_addr ATTRIBUTE_UNUSED = {
     84   16, 16, 0xff, { { F (F_R1) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
     85 };
     86 
     87 static const CGEN_IFMT ifmt_addbr ATTRIBUTE_UNUSED = {
     88   16, 16, 0xff, { { F (F_R1) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
     89 };
     90 
     91 static const CGEN_IFMT ifmt_add2 ATTRIBUTE_UNUSED = {
     92   16, 16, 0xcff, { { F (F_R1) }, { F (F_OP_BIT2) }, { F (F_R0) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
     93 };
     94 
     95 static const CGEN_IFMT ifmt_addb2 ATTRIBUTE_UNUSED = {
     96   16, 16, 0xcff, { { F (F_R1) }, { F (F_OP_BIT2) }, { F (F_R0) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
     97 };
     98 
     99 static const CGEN_IFMT ifmt_addrm2 ATTRIBUTE_UNUSED = {
    100   32, 32, 0xff, { { F (F_MEMGR8) }, { F (F_REGMEM8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    101 };
    102 
    103 static const CGEN_IFMT ifmt_addrm ATTRIBUTE_UNUSED = {
    104   32, 32, 0xff, { { F (F_MEMORY) }, { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    105 };
    106 
    107 static const CGEN_IFMT ifmt_addbrm2 ATTRIBUTE_UNUSED = {
    108   32, 32, 0xff, { { F (F_MEMGR8) }, { F (F_REGMEM8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    109 };
    110 
    111 static const CGEN_IFMT ifmt_addbrm ATTRIBUTE_UNUSED = {
    112   32, 32, 0xff, { { F (F_MEMORY) }, { F (F_REGB8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    113 };
    114 
    115 static const CGEN_IFMT ifmt_muls ATTRIBUTE_UNUSED = {
    116   16, 16, 0xff, { { F (F_R1) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    117 };
    118 
    119 static const CGEN_IFMT ifmt_div ATTRIBUTE_UNUSED = {
    120   16, 16, 0xff, { { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    121 };
    122 
    123 static const CGEN_IFMT ifmt_cpl ATTRIBUTE_UNUSED = {
    124   16, 16, 0xfff, { { F (F_R1) }, { F (F_OP_BIT4) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    125 };
    126 
    127 static const CGEN_IFMT ifmt_cplb ATTRIBUTE_UNUSED = {
    128   16, 16, 0xfff, { { F (F_R1) }, { F (F_OP_BIT4) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    129 };
    130 
    131 static const CGEN_IFMT ifmt_movri ATTRIBUTE_UNUSED = {
    132   16, 16, 0xff, { { F (F_UIMM4) }, { F (F_R4) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    133 };
    134 
    135 static const CGEN_IFMT ifmt_movbri ATTRIBUTE_UNUSED = {
    136   16, 16, 0xff, { { F (F_UIMM4) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    137 };
    138 
    139 static const CGEN_IFMT ifmt_movbr2 ATTRIBUTE_UNUSED = {
    140   16, 16, 0xff, { { F (F_R1) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    141 };
    142 
    143 static const CGEN_IFMT ifmt_mov9i ATTRIBUTE_UNUSED = {
    144   32, 32, 0xff, { { F (F_UIMM16) }, { F (F_R1) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    145 };
    146 
    147 static const CGEN_IFMT ifmt_movb9i ATTRIBUTE_UNUSED = {
    148   32, 32, 0xff, { { F (F_UIMM16) }, { F (F_R1) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    149 };
    150 
    151 static const CGEN_IFMT ifmt_movri11 ATTRIBUTE_UNUSED = {
    152   32, 32, 0xf0ff, { { F (F_MEMORY) }, { F (F_OP_LBIT4) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    153 };
    154 
    155 static const CGEN_IFMT ifmt_movehm5 ATTRIBUTE_UNUSED = {
    156   32, 32, 0xff, { { F (F_MEMORY) }, { F (F_REGOFF8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    157 };
    158 
    159 static const CGEN_IFMT ifmt_movehm6 ATTRIBUTE_UNUSED = {
    160   32, 32, 0xff, { { F (F_UIMM16) }, { F (F_REGOFF8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    161 };
    162 
    163 static const CGEN_IFMT ifmt_movehm7 ATTRIBUTE_UNUSED = {
    164   32, 32, 0xff, { { F (F_OFFSET16) }, { F (F_REGOFF8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    165 };
    166 
    167 static const CGEN_IFMT ifmt_movehm8 ATTRIBUTE_UNUSED = {
    168   32, 32, 0xff, { { F (F_OFFSET16) }, { F (F_REGOFF8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    169 };
    170 
    171 static const CGEN_IFMT ifmt_movehm10 ATTRIBUTE_UNUSED = {
    172   32, 32, 0xff0000ff, { { F (F_OP_BIT8) }, { F (F_UIMM8) }, { F (F_REGOFF8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    173 };
    174 
    175 static const CGEN_IFMT ifmt_movbsrpofm ATTRIBUTE_UNUSED = {
    176   32, 32, 0xff, { { F (F_MEMORY) }, { F (F_REGMEM8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    177 };
    178 
    179 static const CGEN_IFMT ifmt_movbspofmr ATTRIBUTE_UNUSED = {
    180   32, 32, 0xff, { { F (F_MEMORY) }, { F (F_REGMEM8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    181 };
    182 
    183 static const CGEN_IFMT ifmt_jmpa0 ATTRIBUTE_UNUSED = {
    184   32, 32, 0x4ff, { { F (F_OFFSET16) }, { F (F_EXTCCODE) }, { F (F_OP_BITONE) }, { F (F_OP_ONEBIT) }, { F (F_OP_1BIT) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    185 };
    186 
    187 static const CGEN_IFMT ifmt_jmpa_ ATTRIBUTE_UNUSED = {
    188   32, 32, 0x5ff, { { F (F_OFFSET16) }, { F (F_EXTCCODE) }, { F (F_OP_BITONE) }, { F (F_OP_ONEBIT) }, { F (F_OP_1BIT) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    189 };
    190 
    191 static const CGEN_IFMT ifmt_jmpi ATTRIBUTE_UNUSED = {
    192   16, 16, 0xff, { { F (F_ICONDCODE) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    193 };
    194 
    195 static const CGEN_IFMT ifmt_jmpr_nenz ATTRIBUTE_UNUSED = {
    196   16, 16, 0xff, { { F (F_REL8) }, { F (F_RCOND) }, { F (F_OP2) }, { 0 } }
    197 };
    198 
    199 static const CGEN_IFMT ifmt_jmpseg ATTRIBUTE_UNUSED = {
    200   32, 32, 0xff, { { F (F_OFFSET16) }, { F (F_SEG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    201 };
    202 
    203 static const CGEN_IFMT ifmt_jmps ATTRIBUTE_UNUSED = {
    204   32, 32, 0xff, { { F (F_OFFSET16) }, { F (F_SEG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    205 };
    206 
    207 static const CGEN_IFMT ifmt_jb ATTRIBUTE_UNUSED = {
    208   32, 32, 0xf0000ff, { { F (F_QLOBIT) }, { F (F_QHIBIT) }, { F (F_RELHI8) }, { F (F_REGB8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    209 };
    210 
    211 static const CGEN_IFMT ifmt_calla0 ATTRIBUTE_UNUSED = {
    212   32, 32, 0x6ff, { { F (F_OFFSET16) }, { F (F_EXTCCODE) }, { F (F_OP_2BIT) }, { F (F_OP_1BIT) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    213 };
    214 
    215 static const CGEN_IFMT ifmt_calla_ ATTRIBUTE_UNUSED = {
    216   32, 32, 0x7ff, { { F (F_OFFSET16) }, { F (F_EXTCCODE) }, { F (F_OP_BIT3) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    217 };
    218 
    219 static const CGEN_IFMT ifmt_callr ATTRIBUTE_UNUSED = {
    220   16, 16, 0xff, { { F (F_REL8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    221 };
    222 
    223 static const CGEN_IFMT ifmt_callseg ATTRIBUTE_UNUSED = {
    224   32, 32, 0xff, { { F (F_OFFSET16) }, { F (F_SEG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    225 };
    226 
    227 static const CGEN_IFMT ifmt_pcall ATTRIBUTE_UNUSED = {
    228   32, 32, 0xff, { { F (F_OFFSET16) }, { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    229 };
    230 
    231 static const CGEN_IFMT ifmt_trap ATTRIBUTE_UNUSED = {
    232   16, 16, 0x1ff, { { F (F_UIMM7) }, { F (F_OP_1BIT) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    233 };
    234 
    235 static const CGEN_IFMT ifmt_ret ATTRIBUTE_UNUSED = {
    236   16, 16, 0xff0000ff, { { F (F_OP_BIT8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    237 };
    238 
    239 static const CGEN_IFMT ifmt_retp ATTRIBUTE_UNUSED = {
    240   16, 16, 0xff, { { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    241 };
    242 
    243 static const CGEN_IFMT ifmt_reti ATTRIBUTE_UNUSED = {
    244   16, 16, 0xffff, { { F (F_OP_LBIT4) }, { F (F_OP_BIT4) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    245 };
    246 
    247 static const CGEN_IFMT ifmt_srstm ATTRIBUTE_UNUSED = {
    248   32, 32, 0xffffffff, { { F (F_OP_BIT8) }, { F (F_DATA8) }, { F (F_OP_LBIT4) }, { F (F_OP_BIT4) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    249 };
    250 
    251 static const CGEN_IFMT ifmt_atomic ATTRIBUTE_UNUSED = {
    252   16, 16, 0xcfff, { { F (F_OP_LBIT2) }, { F (F_UIMM2) }, { F (F_OP_BIT4) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    253 };
    254 
    255 static const CGEN_IFMT ifmt_extp ATTRIBUTE_UNUSED = {
    256   16, 16, 0xc0ff, { { F (F_OP_LBIT2) }, { F (F_UIMM2) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    257 };
    258 
    259 static const CGEN_IFMT ifmt_extp1 ATTRIBUTE_UNUSED = {
    260   32, 32, 0xfc00cfff, { { F (F_QLOBIT) }, { F (F_QLOBIT2) }, { F (F_PAGENUM) }, { F (F_OP_LBIT2) }, { F (F_UIMM2) }, { F (F_OP_BIT4) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    261 };
    262 
    263 static const CGEN_IFMT ifmt_extpg1 ATTRIBUTE_UNUSED = {
    264   32, 32, 0xcfff, { { F (F_UIMM16) }, { F (F_OP_LBIT2) }, { F (F_UIMM2) }, { F (F_OP_BIT4) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    265 };
    266 
    267 static const CGEN_IFMT ifmt_exts1 ATTRIBUTE_UNUSED = {
    268   32, 32, 0xff00cfff, { { F (F_OP_BIT8) }, { F (F_SEGNUM8) }, { F (F_OP_LBIT2) }, { F (F_UIMM2) }, { F (F_OP_BIT4) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    269 };
    270 
    271 static const CGEN_IFMT ifmt_bclr18 ATTRIBUTE_UNUSED = {
    272   16, 16, 0xff, { { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    273 };
    274 
    275 static const CGEN_IFMT ifmt_bclr0 ATTRIBUTE_UNUSED = {
    276   16, 16, 0xff, { { F (F_REG8) }, { F (F_QCOND) }, { F (F_OP2) }, { 0 } }
    277 };
    278 
    279 static const CGEN_IFMT ifmt_bmov ATTRIBUTE_UNUSED = {
    280   32, 32, 0xff, { { F (F_QLOBIT) }, { F (F_QHIBIT) }, { F (F_REGHI8) }, { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    281 };
    282 
    283 static const CGEN_IFMT ifmt_bfldl ATTRIBUTE_UNUSED = {
    284   32, 32, 0xff, { { F (F_DATAHI8) }, { F (F_MASK8) }, { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    285 };
    286 
    287 static const CGEN_IFMT ifmt_bfldh ATTRIBUTE_UNUSED = {
    288   32, 32, 0xff, { { F (F_DATAHI8) }, { F (F_DATA8) }, { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    289 };
    290 
    291 static const CGEN_IFMT ifmt_cmpri ATTRIBUTE_UNUSED = {
    292   16, 16, 0x8ff, { { F (F_R1) }, { F (F_OP_BIT1) }, { F (F_UIMM3) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    293 };
    294 
    295 static const CGEN_IFMT ifmt_cmpd1ri ATTRIBUTE_UNUSED = {
    296   16, 16, 0xff, { { F (F_UIMM4) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
    297 };
    298 
    299 #undef F
    300 
    301 #define A(a) (1 << CGEN_INSN_##a)
    302 #define OPERAND(op) XC16X_OPERAND_##op
    303 #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
    304 #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
    305 
    306 /* The instruction table.  */
    307 
    308 static const CGEN_OPCODE xc16x_cgen_insn_opcode_table[MAX_INSNS] =
    309 {
    310   /* Special null first entry.
    311      A `num' value of zero is thus invalid.
    312      Also, the special `invalid' insn resides here.  */
    313   { { 0, 0, 0, 0 }, {{0}}, 0, {0}},
    314 /* add $reg8,$pof$upof16 */
    315   {
    316     { 0, 0, 0, 0 },
    317     { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
    318     & ifmt_addrpof, { 0x2 }
    319   },
    320 /* sub $reg8,$pof$upof16 */
    321   {
    322     { 0, 0, 0, 0 },
    323     { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
    324     & ifmt_addrpof, { 0x22 }
    325   },
    326 /* addb $regb8,$pof$upof16 */
    327   {
    328     { 0, 0, 0, 0 },
    329     { { MNEM, ' ', OP (REGB8), ',', OP (POF), OP (UPOF16), 0 } },
    330     & ifmt_addbrpof, { 0x3 }
    331   },
    332 /* subb $regb8,$pof$upof16 */
    333   {
    334     { 0, 0, 0, 0 },
    335     { { MNEM, ' ', OP (REGB8), ',', OP (POF), OP (UPOF16), 0 } },
    336     & ifmt_addbrpof, { 0x23 }
    337   },
    338 /* add $reg8,$pag$upag16 */
    339   {
    340     { 0, 0, 0, 0 },
    341     { { MNEM, ' ', OP (REG8), ',', OP (PAG), OP (UPAG16), 0 } },
    342     & ifmt_addrpag, { 0x2 }
    343   },
    344 /* sub $reg8,$pag$upag16 */
    345   {
    346     { 0, 0, 0, 0 },
    347     { { MNEM, ' ', OP (REG8), ',', OP (PAG), OP (UPAG16), 0 } },
    348     & ifmt_addrpag, { 0x22 }
    349   },
    350 /* addb $regb8,$pag$upag16 */
    351   {
    352     { 0, 0, 0, 0 },
    353     { { MNEM, ' ', OP (REGB8), ',', OP (PAG), OP (UPAG16), 0 } },
    354     & ifmt_addbrpag, { 0x3 }
    355   },
    356 /* subb $regb8,$pag$upag16 */
    357   {
    358     { 0, 0, 0, 0 },
    359     { { MNEM, ' ', OP (REGB8), ',', OP (PAG), OP (UPAG16), 0 } },
    360     & ifmt_addbrpag, { 0x23 }
    361   },
    362 /* addc $reg8,$pof$upof16 */
    363   {
    364     { 0, 0, 0, 0 },
    365     { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
    366     & ifmt_addrpof, { 0x12 }
    367   },
    368 /* subc $reg8,$pof$upof16 */
    369   {
    370     { 0, 0, 0, 0 },
    371     { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
    372     & ifmt_addrpof, { 0x32 }
    373   },
    374 /* addcb $regb8,$pof$upof16 */
    375   {
    376     { 0, 0, 0, 0 },
    377     { { MNEM, ' ', OP (REGB8), ',', OP (POF), OP (UPOF16), 0 } },
    378     & ifmt_addbrpof, { 0x13 }
    379   },
    380 /* subcb $regb8,$pof$upof16 */
    381   {
    382     { 0, 0, 0, 0 },
    383     { { MNEM, ' ', OP (REGB8), ',', OP (POF), OP (UPOF16), 0 } },
    384     & ifmt_addbrpof, { 0x33 }
    385   },
    386 /* addc $reg8,$pag$upag16 */
    387   {
    388     { 0, 0, 0, 0 },
    389     { { MNEM, ' ', OP (REG8), ',', OP (PAG), OP (UPAG16), 0 } },
    390     & ifmt_addrpag, { 0x12 }
    391   },
    392 /* subc $reg8,$pag$upag16 */
    393   {
    394     { 0, 0, 0, 0 },
    395     { { MNEM, ' ', OP (REG8), ',', OP (PAG), OP (UPAG16), 0 } },
    396     & ifmt_addrpag, { 0x32 }
    397   },
    398 /* addcb $regb8,$pag$upag16 */
    399   {
    400     { 0, 0, 0, 0 },
    401     { { MNEM, ' ', OP (REGB8), ',', OP (PAG), OP (UPAG16), 0 } },
    402     & ifmt_addbrpag, { 0x13 }
    403   },
    404 /* subcb $regb8,$pag$upag16 */
    405   {
    406     { 0, 0, 0, 0 },
    407     { { MNEM, ' ', OP (REGB8), ',', OP (PAG), OP (UPAG16), 0 } },
    408     & ifmt_addbrpag, { 0x33 }
    409   },
    410 /* add $pof$upof16,$reg8 */
    411   {
    412     { 0, 0, 0, 0 },
    413     { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REG8), 0 } },
    414     & ifmt_addrpof, { 0x4 }
    415   },
    416 /* sub $pof$upof16,$reg8 */
    417   {
    418     { 0, 0, 0, 0 },
    419     { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REG8), 0 } },
    420     & ifmt_addrpof, { 0x24 }
    421   },
    422 /* addb $pof$upof16,$regb8 */
    423   {
    424     { 0, 0, 0, 0 },
    425     { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGB8), 0 } },
    426     & ifmt_addbrpof, { 0x5 }
    427   },
    428 /* subb $pof$upof16,$regb8 */
    429   {
    430     { 0, 0, 0, 0 },
    431     { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGB8), 0 } },
    432     & ifmt_addbrpof, { 0x25 }
    433   },
    434 /* addc $pof$upof16,$reg8 */
    435   {
    436     { 0, 0, 0, 0 },
    437     { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REG8), 0 } },
    438     & ifmt_addrpof, { 0x14 }
    439   },
    440 /* subc $pof$upof16,$reg8 */
    441   {
    442     { 0, 0, 0, 0 },
    443     { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REG8), 0 } },
    444     & ifmt_addrpof, { 0x34 }
    445   },
    446 /* addcb $pof$upof16,$regb8 */
    447   {
    448     { 0, 0, 0, 0 },
    449     { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGB8), 0 } },
    450     & ifmt_addbrpof, { 0x15 }
    451   },
    452 /* subcb $pof$upof16,$regb8 */
    453   {
    454     { 0, 0, 0, 0 },
    455     { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGB8), 0 } },
    456     & ifmt_addbrpof, { 0x35 }
    457   },
    458 /* add $reg8,$hash$pof$uimm16 */
    459   {
    460     { 0, 0, 0, 0 },
    461     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (POF), OP (UIMM16), 0 } },
    462     & ifmt_addrhpof, { 0x6 }
    463   },
    464 /* sub $reg8,$hash$pof$uimm16 */
    465   {
    466     { 0, 0, 0, 0 },
    467     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (POF), OP (UIMM16), 0 } },
    468     & ifmt_addrhpof, { 0x26 }
    469   },
    470 /* add $reg8,$hash$pag$uimm16 */
    471   {
    472     { 0, 0, 0, 0 },
    473     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (PAG), OP (UIMM16), 0 } },
    474     & ifmt_addrhpof, { 0x6 }
    475   },
    476 /* sub $reg8,$hash$pag$uimm16 */
    477   {
    478     { 0, 0, 0, 0 },
    479     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (PAG), OP (UIMM16), 0 } },
    480     & ifmt_addrhpof, { 0x26 }
    481   },
    482 /* add $dr,$hash$pof$uimm3 */
    483   {
    484     { 0, 0, 0, 0 },
    485     { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (POF), OP (UIMM3), 0 } },
    486     & ifmt_addrhpof3, { 0x8 }
    487   },
    488 /* sub $dr,$hash$pof$uimm3 */
    489   {
    490     { 0, 0, 0, 0 },
    491     { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (POF), OP (UIMM3), 0 } },
    492     & ifmt_addrhpof3, { 0x28 }
    493   },
    494 /* addb $drb,$hash$pag$uimm3 */
    495   {
    496     { 0, 0, 0, 0 },
    497     { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (PAG), OP (UIMM3), 0 } },
    498     & ifmt_addbrhpag3, { 0x9 }
    499   },
    500 /* subb $drb,$hash$pag$uimm3 */
    501   {
    502     { 0, 0, 0, 0 },
    503     { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (PAG), OP (UIMM3), 0 } },
    504     & ifmt_addbrhpag3, { 0x29 }
    505   },
    506 /* add $dr,$hash$pag$uimm3 */
    507   {
    508     { 0, 0, 0, 0 },
    509     { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (PAG), OP (UIMM3), 0 } },
    510     & ifmt_addrhpof3, { 0x8 }
    511   },
    512 /* sub $dr,$hash$pag$uimm3 */
    513   {
    514     { 0, 0, 0, 0 },
    515     { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (PAG), OP (UIMM3), 0 } },
    516     & ifmt_addrhpof3, { 0x28 }
    517   },
    518 /* addb $drb,$hash$pof$uimm3 */
    519   {
    520     { 0, 0, 0, 0 },
    521     { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (POF), OP (UIMM3), 0 } },
    522     & ifmt_addbrhpag3, { 0x9 }
    523   },
    524 /* subb $drb,$hash$pof$uimm3 */
    525   {
    526     { 0, 0, 0, 0 },
    527     { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (POF), OP (UIMM3), 0 } },
    528     & ifmt_addbrhpag3, { 0x29 }
    529   },
    530 /* addb $regb8,$hash$pof$uimm8 */
    531   {
    532     { 0, 0, 0, 0 },
    533     { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (POF), OP (UIMM8), 0 } },
    534     & ifmt_addrbhpof, { 0x7 }
    535   },
    536 /* subb $regb8,$hash$pof$uimm8 */
    537   {
    538     { 0, 0, 0, 0 },
    539     { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (POF), OP (UIMM8), 0 } },
    540     & ifmt_addrbhpof, { 0x27 }
    541   },
    542 /* addb $regb8,$hash$pag$uimm8 */
    543   {
    544     { 0, 0, 0, 0 },
    545     { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (PAG), OP (UIMM8), 0 } },
    546     & ifmt_addrbhpof, { 0x7 }
    547   },
    548 /* subb $regb8,$hash$pag$uimm8 */
    549   {
    550     { 0, 0, 0, 0 },
    551     { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (PAG), OP (UIMM8), 0 } },
    552     & ifmt_addrbhpof, { 0x27 }
    553   },
    554 /* addc $reg8,$hash$pof$uimm16 */
    555   {
    556     { 0, 0, 0, 0 },
    557     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (POF), OP (UIMM16), 0 } },
    558     & ifmt_addrhpof, { 0x16 }
    559   },
    560 /* subc $reg8,$hash$pof$uimm16 */
    561   {
    562     { 0, 0, 0, 0 },
    563     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (POF), OP (UIMM16), 0 } },
    564     & ifmt_addrhpof, { 0x36 }
    565   },
    566 /* addc $reg8,$hash$pag$uimm16 */
    567   {
    568     { 0, 0, 0, 0 },
    569     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (PAG), OP (UIMM16), 0 } },
    570     & ifmt_addrhpof, { 0x16 }
    571   },
    572 /* subc $reg8,$hash$pag$uimm16 */
    573   {
    574     { 0, 0, 0, 0 },
    575     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (PAG), OP (UIMM16), 0 } },
    576     & ifmt_addrhpof, { 0x36 }
    577   },
    578 /* addc $dr,$hash$pof$uimm3 */
    579   {
    580     { 0, 0, 0, 0 },
    581     { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (POF), OP (UIMM3), 0 } },
    582     & ifmt_addrhpof3, { 0x18 }
    583   },
    584 /* subc $dr,$hash$pof$uimm3 */
    585   {
    586     { 0, 0, 0, 0 },
    587     { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (POF), OP (UIMM3), 0 } },
    588     & ifmt_addrhpof3, { 0x38 }
    589   },
    590 /* addcb $drb,$hash$pag$uimm3 */
    591   {
    592     { 0, 0, 0, 0 },
    593     { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (PAG), OP (UIMM3), 0 } },
    594     & ifmt_addbrhpag3, { 0x19 }
    595   },
    596 /* subcb $drb,$hash$pag$uimm3 */
    597   {
    598     { 0, 0, 0, 0 },
    599     { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (PAG), OP (UIMM3), 0 } },
    600     & ifmt_addbrhpag3, { 0x39 }
    601   },
    602 /* addc $dr,$hash$pag$uimm3 */
    603   {
    604     { 0, 0, 0, 0 },
    605     { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (PAG), OP (UIMM3), 0 } },
    606     & ifmt_addrhpof3, { 0x18 }
    607   },
    608 /* subc $dr,$hash$pag$uimm3 */
    609   {
    610     { 0, 0, 0, 0 },
    611     { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (PAG), OP (UIMM3), 0 } },
    612     & ifmt_addrhpof3, { 0x38 }
    613   },
    614 /* addcb $drb,$hash$pof$uimm3 */
    615   {
    616     { 0, 0, 0, 0 },
    617     { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (POF), OP (UIMM3), 0 } },
    618     & ifmt_addbrhpag3, { 0x19 }
    619   },
    620 /* subcb $drb,$hash$pof$uimm3 */
    621   {
    622     { 0, 0, 0, 0 },
    623     { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (POF), OP (UIMM3), 0 } },
    624     & ifmt_addbrhpag3, { 0x39 }
    625   },
    626 /* addcb $regb8,$hash$pof$uimm8 */
    627   {
    628     { 0, 0, 0, 0 },
    629     { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (POF), OP (UIMM8), 0 } },
    630     & ifmt_addrbhpof, { 0x17 }
    631   },
    632 /* subcb $regb8,$hash$pof$uimm8 */
    633   {
    634     { 0, 0, 0, 0 },
    635     { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (POF), OP (UIMM8), 0 } },
    636     & ifmt_addrbhpof, { 0x37 }
    637   },
    638 /* addcb $regb8,$hash$pag$uimm8 */
    639   {
    640     { 0, 0, 0, 0 },
    641     { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (PAG), OP (UIMM8), 0 } },
    642     & ifmt_addrbhpof, { 0x17 }
    643   },
    644 /* subcb $regb8,$hash$pag$uimm8 */
    645   {
    646     { 0, 0, 0, 0 },
    647     { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (PAG), OP (UIMM8), 0 } },
    648     & ifmt_addrbhpof, { 0x37 }
    649   },
    650 /* add $dr,$hash$uimm3 */
    651   {
    652     { 0, 0, 0, 0 },
    653     { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (UIMM3), 0 } },
    654     & ifmt_addrhpof3, { 0x8 }
    655   },
    656 /* sub $dr,$hash$uimm3 */
    657   {
    658     { 0, 0, 0, 0 },
    659     { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (UIMM3), 0 } },
    660     & ifmt_addrhpof3, { 0x28 }
    661   },
    662 /* addb $drb,$hash$uimm3 */
    663   {
    664     { 0, 0, 0, 0 },
    665     { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (UIMM3), 0 } },
    666     & ifmt_addbrhpag3, { 0x9 }
    667   },
    668 /* subb $drb,$hash$uimm3 */
    669   {
    670     { 0, 0, 0, 0 },
    671     { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (UIMM3), 0 } },
    672     & ifmt_addbrhpag3, { 0x29 }
    673   },
    674 /* add $reg8,$hash$uimm16 */
    675   {
    676     { 0, 0, 0, 0 },
    677     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
    678     & ifmt_addrhpof, { 0x6 }
    679   },
    680 /* sub $reg8,$hash$uimm16 */
    681   {
    682     { 0, 0, 0, 0 },
    683     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
    684     & ifmt_addrhpof, { 0x26 }
    685   },
    686 /* addb $regb8,$hash$uimm8 */
    687   {
    688     { 0, 0, 0, 0 },
    689     { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (UIMM8), 0 } },
    690     & ifmt_addrbhpof, { 0x7 }
    691   },
    692 /* subb $regb8,$hash$uimm8 */
    693   {
    694     { 0, 0, 0, 0 },
    695     { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (UIMM8), 0 } },
    696     & ifmt_addrbhpof, { 0x27 }
    697   },
    698 /* addc $dr,$hash$uimm3 */
    699   {
    700     { 0, 0, 0, 0 },
    701     { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (UIMM3), 0 } },
    702     & ifmt_addrhpof3, { 0x18 }
    703   },
    704 /* subc $dr,$hash$uimm3 */
    705   {
    706     { 0, 0, 0, 0 },
    707     { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (UIMM3), 0 } },
    708     & ifmt_addrhpof3, { 0x38 }
    709   },
    710 /* addcb $drb,$hash$uimm3 */
    711   {
    712     { 0, 0, 0, 0 },
    713     { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (UIMM3), 0 } },
    714     & ifmt_addbrhpag3, { 0x19 }
    715   },
    716 /* subcb $drb,$hash$uimm3 */
    717   {
    718     { 0, 0, 0, 0 },
    719     { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (UIMM3), 0 } },
    720     & ifmt_addbrhpag3, { 0x39 }
    721   },
    722 /* addc $reg8,$hash$uimm16 */
    723   {
    724     { 0, 0, 0, 0 },
    725     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
    726     & ifmt_addrhpof, { 0x16 }
    727   },
    728 /* subc $reg8,$hash$uimm16 */
    729   {
    730     { 0, 0, 0, 0 },
    731     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
    732     & ifmt_addrhpof, { 0x36 }
    733   },
    734 /* addcb $regb8,$hash$uimm8 */
    735   {
    736     { 0, 0, 0, 0 },
    737     { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (UIMM8), 0 } },
    738     & ifmt_addrbhpof, { 0x17 }
    739   },
    740 /* subcb $regb8,$hash$uimm8 */
    741   {
    742     { 0, 0, 0, 0 },
    743     { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (UIMM8), 0 } },
    744     & ifmt_addrbhpof, { 0x37 }
    745   },
    746 /* add $dr,$sr */
    747   {
    748     { 0, 0, 0, 0 },
    749     { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
    750     & ifmt_addr, { 0x0 }
    751   },
    752 /* sub $dr,$sr */
    753   {
    754     { 0, 0, 0, 0 },
    755     { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
    756     & ifmt_addr, { 0x20 }
    757   },
    758 /* addb $drb,$srb */
    759   {
    760     { 0, 0, 0, 0 },
    761     { { MNEM, ' ', OP (DRB), ',', OP (SRB), 0 } },
    762     & ifmt_addbr, { 0x1 }
    763   },
    764 /* subb $drb,$srb */
    765   {
    766     { 0, 0, 0, 0 },
    767     { { MNEM, ' ', OP (DRB), ',', OP (SRB), 0 } },
    768     & ifmt_addbr, { 0x21 }
    769   },
    770 /* add $dr,[$sr2] */
    771   {
    772     { 0, 0, 0, 0 },
    773     { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), ']', 0 } },
    774     & ifmt_add2, { 0x808 }
    775   },
    776 /* sub $dr,[$sr2] */
    777   {
    778     { 0, 0, 0, 0 },
    779     { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), ']', 0 } },
    780     & ifmt_add2, { 0x828 }
    781   },
    782 /* addb $drb,[$sr2] */
    783   {
    784     { 0, 0, 0, 0 },
    785     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), ']', 0 } },
    786     & ifmt_addb2, { 0x809 }
    787   },
    788 /* subb $drb,[$sr2] */
    789   {
    790     { 0, 0, 0, 0 },
    791     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), ']', 0 } },
    792     & ifmt_addb2, { 0x829 }
    793   },
    794 /* add $dr,[$sr2+] */
    795   {
    796     { 0, 0, 0, 0 },
    797     { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), '+', ']', 0 } },
    798     & ifmt_add2, { 0xc08 }
    799   },
    800 /* sub $dr,[$sr2+] */
    801   {
    802     { 0, 0, 0, 0 },
    803     { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), '+', ']', 0 } },
    804     & ifmt_add2, { 0xc28 }
    805   },
    806 /* addb $drb,[$sr2+] */
    807   {
    808     { 0, 0, 0, 0 },
    809     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), '+', ']', 0 } },
    810     & ifmt_addb2, { 0xc09 }
    811   },
    812 /* subb $drb,[$sr2+] */
    813   {
    814     { 0, 0, 0, 0 },
    815     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), '+', ']', 0 } },
    816     & ifmt_addb2, { 0xc29 }
    817   },
    818 /* addc $dr,$sr */
    819   {
    820     { 0, 0, 0, 0 },
    821     { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
    822     & ifmt_addr, { 0x10 }
    823   },
    824 /* subc $dr,$sr */
    825   {
    826     { 0, 0, 0, 0 },
    827     { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
    828     & ifmt_addr, { 0x30 }
    829   },
    830 /* addcb $drb,$srb */
    831   {
    832     { 0, 0, 0, 0 },
    833     { { MNEM, ' ', OP (DRB), ',', OP (SRB), 0 } },
    834     & ifmt_addbr, { 0x11 }
    835   },
    836 /* subcb $drb,$srb */
    837   {
    838     { 0, 0, 0, 0 },
    839     { { MNEM, ' ', OP (DRB), ',', OP (SRB), 0 } },
    840     & ifmt_addbr, { 0x31 }
    841   },
    842 /* addc $dr,[$sr2] */
    843   {
    844     { 0, 0, 0, 0 },
    845     { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), ']', 0 } },
    846     & ifmt_add2, { 0x818 }
    847   },
    848 /* subc $dr,[$sr2] */
    849   {
    850     { 0, 0, 0, 0 },
    851     { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), ']', 0 } },
    852     & ifmt_add2, { 0x838 }
    853   },
    854 /* addcb $drb,[$sr2] */
    855   {
    856     { 0, 0, 0, 0 },
    857     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), ']', 0 } },
    858     & ifmt_addb2, { 0x819 }
    859   },
    860 /* subcb $drb,[$sr2] */
    861   {
    862     { 0, 0, 0, 0 },
    863     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), ']', 0 } },
    864     & ifmt_addb2, { 0x839 }
    865   },
    866 /* addc $dr,[$sr2+] */
    867   {
    868     { 0, 0, 0, 0 },
    869     { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), '+', ']', 0 } },
    870     & ifmt_add2, { 0xc18 }
    871   },
    872 /* subc $dr,[$sr2+] */
    873   {
    874     { 0, 0, 0, 0 },
    875     { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), '+', ']', 0 } },
    876     & ifmt_add2, { 0xc38 }
    877   },
    878 /* addcb $drb,[$sr2+] */
    879   {
    880     { 0, 0, 0, 0 },
    881     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), '+', ']', 0 } },
    882     & ifmt_addb2, { 0xc19 }
    883   },
    884 /* subcb $drb,[$sr2+] */
    885   {
    886     { 0, 0, 0, 0 },
    887     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), '+', ']', 0 } },
    888     & ifmt_addb2, { 0xc39 }
    889   },
    890 /* add $regmem8,$memgr8 */
    891   {
    892     { 0, 0, 0, 0 },
    893     { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
    894     & ifmt_addrm2, { 0x2 }
    895   },
    896 /* add $memgr8,$regmem8 */
    897   {
    898     { 0, 0, 0, 0 },
    899     { { MNEM, ' ', OP (MEMGR8), ',', OP (REGMEM8), 0 } },
    900     & ifmt_addrm2, { 0x4 }
    901   },
    902 /* add $reg8,$memory */
    903   {
    904     { 0, 0, 0, 0 },
    905     { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
    906     & ifmt_addrm, { 0x2 }
    907   },
    908 /* add $memory,$reg8 */
    909   {
    910     { 0, 0, 0, 0 },
    911     { { MNEM, ' ', OP (MEMORY), ',', OP (REG8), 0 } },
    912     & ifmt_addrm, { 0x4 }
    913   },
    914 /* sub $regmem8,$memgr8 */
    915   {
    916     { 0, 0, 0, 0 },
    917     { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
    918     & ifmt_addrm2, { 0x22 }
    919   },
    920 /* sub $memgr8,$regmem8 */
    921   {
    922     { 0, 0, 0, 0 },
    923     { { MNEM, ' ', OP (MEMGR8), ',', OP (REGMEM8), 0 } },
    924     & ifmt_addrm2, { 0x24 }
    925   },
    926 /* sub $reg8,$memory */
    927   {
    928     { 0, 0, 0, 0 },
    929     { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
    930     & ifmt_addrm, { 0x22 }
    931   },
    932 /* sub $memory,$reg8 */
    933   {
    934     { 0, 0, 0, 0 },
    935     { { MNEM, ' ', OP (MEMORY), ',', OP (REG8), 0 } },
    936     & ifmt_addrm, { 0x24 }
    937   },
    938 /* addb $regbmem8,$memgr8 */
    939   {
    940     { 0, 0, 0, 0 },
    941     { { MNEM, ' ', OP (REGBMEM8), ',', OP (MEMGR8), 0 } },
    942     & ifmt_addbrm2, { 0x3 }
    943   },
    944 /* addb $memgr8,$regbmem8 */
    945   {
    946     { 0, 0, 0, 0 },
    947     { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
    948     & ifmt_addbrm2, { 0x5 }
    949   },
    950 /* addb $regb8,$memory */
    951   {
    952     { 0, 0, 0, 0 },
    953     { { MNEM, ' ', OP (REGB8), ',', OP (MEMORY), 0 } },
    954     & ifmt_addbrm, { 0x3 }
    955   },
    956 /* addb $memory,$regb8 */
    957   {
    958     { 0, 0, 0, 0 },
    959     { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
    960     & ifmt_addbrm, { 0x5 }
    961   },
    962 /* subb $regbmem8,$memgr8 */
    963   {
    964     { 0, 0, 0, 0 },
    965     { { MNEM, ' ', OP (REGBMEM8), ',', OP (MEMGR8), 0 } },
    966     & ifmt_addbrm2, { 0x23 }
    967   },
    968 /* subb $memgr8,$regbmem8 */
    969   {
    970     { 0, 0, 0, 0 },
    971     { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
    972     & ifmt_addbrm2, { 0x25 }
    973   },
    974 /* subb $regb8,$memory */
    975   {
    976     { 0, 0, 0, 0 },
    977     { { MNEM, ' ', OP (REGB8), ',', OP (MEMORY), 0 } },
    978     & ifmt_addbrm, { 0x23 }
    979   },
    980 /* subb $memory,$regb8 */
    981   {
    982     { 0, 0, 0, 0 },
    983     { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
    984     & ifmt_addbrm, { 0x25 }
    985   },
    986 /* addc $regmem8,$memgr8 */
    987   {
    988     { 0, 0, 0, 0 },
    989     { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
    990     & ifmt_addrm2, { 0x12 }
    991   },
    992 /* addc $memgr8,$regmem8 */
    993   {
    994     { 0, 0, 0, 0 },
    995     { { MNEM, ' ', OP (MEMGR8), ',', OP (REGMEM8), 0 } },
    996     & ifmt_addrm2, { 0x14 }
    997   },
    998 /* addc $reg8,$memory */
    999   {
   1000     { 0, 0, 0, 0 },
   1001     { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
   1002     & ifmt_addrm, { 0x12 }
   1003   },
   1004 /* addc $memory,$reg8 */
   1005   {
   1006     { 0, 0, 0, 0 },
   1007     { { MNEM, ' ', OP (MEMORY), ',', OP (REG8), 0 } },
   1008     & ifmt_addrm, { 0x14 }
   1009   },
   1010 /* subc $regmem8,$memgr8 */
   1011   {
   1012     { 0, 0, 0, 0 },
   1013     { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
   1014     & ifmt_addrm2, { 0x32 }
   1015   },
   1016 /* subc $memgr8,$regmem8 */
   1017   {
   1018     { 0, 0, 0, 0 },
   1019     { { MNEM, ' ', OP (MEMGR8), ',', OP (REGMEM8), 0 } },
   1020     & ifmt_addrm2, { 0x34 }
   1021   },
   1022 /* subc $reg8,$memory */
   1023   {
   1024     { 0, 0, 0, 0 },
   1025     { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
   1026     & ifmt_addrm, { 0x32 }
   1027   },
   1028 /* subc $memory,$reg8 */
   1029   {
   1030     { 0, 0, 0, 0 },
   1031     { { MNEM, ' ', OP (MEMORY), ',', OP (REG8), 0 } },
   1032     & ifmt_addrm, { 0x34 }
   1033   },
   1034 /* addcb $regbmem8,$memgr8 */
   1035   {
   1036     { 0, 0, 0, 0 },
   1037     { { MNEM, ' ', OP (REGBMEM8), ',', OP (MEMGR8), 0 } },
   1038     & ifmt_addbrm2, { 0x13 }
   1039   },
   1040 /* addcb $memgr8,$regbmem8 */
   1041   {
   1042     { 0, 0, 0, 0 },
   1043     { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
   1044     & ifmt_addbrm2, { 0x15 }
   1045   },
   1046 /* addcb $regb8,$memory */
   1047   {
   1048     { 0, 0, 0, 0 },
   1049     { { MNEM, ' ', OP (REGB8), ',', OP (MEMORY), 0 } },
   1050     & ifmt_addbrm, { 0x13 }
   1051   },
   1052 /* addcb $memory,$regb8 */
   1053   {
   1054     { 0, 0, 0, 0 },
   1055     { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
   1056     & ifmt_addbrm, { 0x15 }
   1057   },
   1058 /* subcb $regbmem8,$memgr8 */
   1059   {
   1060     { 0, 0, 0, 0 },
   1061     { { MNEM, ' ', OP (REGBMEM8), ',', OP (MEMGR8), 0 } },
   1062     & ifmt_addbrm2, { 0x33 }
   1063   },
   1064 /* subcb $memgr8,$regbmem8 */
   1065   {
   1066     { 0, 0, 0, 0 },
   1067     { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
   1068     & ifmt_addbrm2, { 0x35 }
   1069   },
   1070 /* subcb $regb8,$memory */
   1071   {
   1072     { 0, 0, 0, 0 },
   1073     { { MNEM, ' ', OP (REGB8), ',', OP (MEMORY), 0 } },
   1074     & ifmt_addbrm, { 0x33 }
   1075   },
   1076 /* subcb $memory,$regb8 */
   1077   {
   1078     { 0, 0, 0, 0 },
   1079     { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
   1080     & ifmt_addbrm, { 0x35 }
   1081   },
   1082 /* mul $src1,$src2 */
   1083   {
   1084     { 0, 0, 0, 0 },
   1085     { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 } },
   1086     & ifmt_muls, { 0xb }
   1087   },
   1088 /* mulu $src1,$src2 */
   1089   {
   1090     { 0, 0, 0, 0 },
   1091     { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 } },
   1092     & ifmt_muls, { 0x1b }
   1093   },
   1094 /* div $srdiv */
   1095   {
   1096     { 0, 0, 0, 0 },
   1097     { { MNEM, ' ', OP (SRDIV), 0 } },
   1098     & ifmt_div, { 0x4b }
   1099   },
   1100 /* divl $srdiv */
   1101   {
   1102     { 0, 0, 0, 0 },
   1103     { { MNEM, ' ', OP (SRDIV), 0 } },
   1104     & ifmt_div, { 0x6b }
   1105   },
   1106 /* divlu $srdiv */
   1107   {
   1108     { 0, 0, 0, 0 },
   1109     { { MNEM, ' ', OP (SRDIV), 0 } },
   1110     & ifmt_div, { 0x7b }
   1111   },
   1112 /* divu $srdiv */
   1113   {
   1114     { 0, 0, 0, 0 },
   1115     { { MNEM, ' ', OP (SRDIV), 0 } },
   1116     & ifmt_div, { 0x5b }
   1117   },
   1118 /* cpl $dr */
   1119   {
   1120     { 0, 0, 0, 0 },
   1121     { { MNEM, ' ', OP (DR), 0 } },
   1122     & ifmt_cpl, { 0x91 }
   1123   },
   1124 /* cplb $drb */
   1125   {
   1126     { 0, 0, 0, 0 },
   1127     { { MNEM, ' ', OP (DRB), 0 } },
   1128     & ifmt_cplb, { 0xb1 }
   1129   },
   1130 /* neg $dr */
   1131   {
   1132     { 0, 0, 0, 0 },
   1133     { { MNEM, ' ', OP (DR), 0 } },
   1134     & ifmt_cpl, { 0x81 }
   1135   },
   1136 /* negb $drb */
   1137   {
   1138     { 0, 0, 0, 0 },
   1139     { { MNEM, ' ', OP (DRB), 0 } },
   1140     & ifmt_cplb, { 0xa1 }
   1141   },
   1142 /* and $dr,$sr */
   1143   {
   1144     { 0, 0, 0, 0 },
   1145     { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
   1146     & ifmt_addr, { 0x60 }
   1147   },
   1148 /* or $dr,$sr */
   1149   {
   1150     { 0, 0, 0, 0 },
   1151     { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
   1152     & ifmt_addr, { 0x70 }
   1153   },
   1154 /* xor $dr,$sr */
   1155   {
   1156     { 0, 0, 0, 0 },
   1157     { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
   1158     & ifmt_addr, { 0x50 }
   1159   },
   1160 /* andb $drb,$srb */
   1161   {
   1162     { 0, 0, 0, 0 },
   1163     { { MNEM, ' ', OP (DRB), ',', OP (SRB), 0 } },
   1164     & ifmt_addbr, { 0x61 }
   1165   },
   1166 /* orb $drb,$srb */
   1167   {
   1168     { 0, 0, 0, 0 },
   1169     { { MNEM, ' ', OP (DRB), ',', OP (SRB), 0 } },
   1170     & ifmt_addbr, { 0x71 }
   1171   },
   1172 /* xorb $drb,$srb */
   1173   {
   1174     { 0, 0, 0, 0 },
   1175     { { MNEM, ' ', OP (DRB), ',', OP (SRB), 0 } },
   1176     & ifmt_addbr, { 0x51 }
   1177   },
   1178 /* and $dr,$hash$uimm3 */
   1179   {
   1180     { 0, 0, 0, 0 },
   1181     { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (UIMM3), 0 } },
   1182     & ifmt_addrhpof3, { 0x68 }
   1183   },
   1184 /* or $dr,$hash$uimm3 */
   1185   {
   1186     { 0, 0, 0, 0 },
   1187     { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (UIMM3), 0 } },
   1188     & ifmt_addrhpof3, { 0x78 }
   1189   },
   1190 /* xor $dr,$hash$uimm3 */
   1191   {
   1192     { 0, 0, 0, 0 },
   1193     { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (UIMM3), 0 } },
   1194     & ifmt_addrhpof3, { 0x58 }
   1195   },
   1196 /* andb $drb,$hash$uimm3 */
   1197   {
   1198     { 0, 0, 0, 0 },
   1199     { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (UIMM3), 0 } },
   1200     & ifmt_addbrhpag3, { 0x69 }
   1201   },
   1202 /* orb $drb,$hash$uimm3 */
   1203   {
   1204     { 0, 0, 0, 0 },
   1205     { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (UIMM3), 0 } },
   1206     & ifmt_addbrhpag3, { 0x79 }
   1207   },
   1208 /* xorb $drb,$hash$uimm3 */
   1209   {
   1210     { 0, 0, 0, 0 },
   1211     { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (UIMM3), 0 } },
   1212     & ifmt_addbrhpag3, { 0x59 }
   1213   },
   1214 /* and $reg8,$hash$uimm16 */
   1215   {
   1216     { 0, 0, 0, 0 },
   1217     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
   1218     & ifmt_addrhpof, { 0x66 }
   1219   },
   1220 /* or $reg8,$hash$uimm16 */
   1221   {
   1222     { 0, 0, 0, 0 },
   1223     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
   1224     & ifmt_addrhpof, { 0x76 }
   1225   },
   1226 /* xor $reg8,$hash$uimm16 */
   1227   {
   1228     { 0, 0, 0, 0 },
   1229     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
   1230     & ifmt_addrhpof, { 0x56 }
   1231   },
   1232 /* andb $regb8,$hash$uimm8 */
   1233   {
   1234     { 0, 0, 0, 0 },
   1235     { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (UIMM8), 0 } },
   1236     & ifmt_addrbhpof, { 0x67 }
   1237   },
   1238 /* orb $regb8,$hash$uimm8 */
   1239   {
   1240     { 0, 0, 0, 0 },
   1241     { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (UIMM8), 0 } },
   1242     & ifmt_addrbhpof, { 0x77 }
   1243   },
   1244 /* xorb $regb8,$hash$uimm8 */
   1245   {
   1246     { 0, 0, 0, 0 },
   1247     { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (UIMM8), 0 } },
   1248     & ifmt_addrbhpof, { 0x57 }
   1249   },
   1250 /* and $dr,[$sr2] */
   1251   {
   1252     { 0, 0, 0, 0 },
   1253     { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), ']', 0 } },
   1254     & ifmt_add2, { 0x868 }
   1255   },
   1256 /* or $dr,[$sr2] */
   1257   {
   1258     { 0, 0, 0, 0 },
   1259     { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), ']', 0 } },
   1260     & ifmt_add2, { 0x878 }
   1261   },
   1262 /* xor $dr,[$sr2] */
   1263   {
   1264     { 0, 0, 0, 0 },
   1265     { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), ']', 0 } },
   1266     & ifmt_add2, { 0x858 }
   1267   },
   1268 /* andb $drb,[$sr2] */
   1269   {
   1270     { 0, 0, 0, 0 },
   1271     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), ']', 0 } },
   1272     & ifmt_addb2, { 0x869 }
   1273   },
   1274 /* orb $drb,[$sr2] */
   1275   {
   1276     { 0, 0, 0, 0 },
   1277     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), ']', 0 } },
   1278     & ifmt_addb2, { 0x879 }
   1279   },
   1280 /* xorb $drb,[$sr2] */
   1281   {
   1282     { 0, 0, 0, 0 },
   1283     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), ']', 0 } },
   1284     & ifmt_addb2, { 0x859 }
   1285   },
   1286 /* and $dr,[$sr2+] */
   1287   {
   1288     { 0, 0, 0, 0 },
   1289     { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), '+', ']', 0 } },
   1290     & ifmt_add2, { 0xc68 }
   1291   },
   1292 /* or $dr,[$sr2+] */
   1293   {
   1294     { 0, 0, 0, 0 },
   1295     { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), '+', ']', 0 } },
   1296     & ifmt_add2, { 0xc78 }
   1297   },
   1298 /* xor $dr,[$sr2+] */
   1299   {
   1300     { 0, 0, 0, 0 },
   1301     { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), '+', ']', 0 } },
   1302     & ifmt_add2, { 0xc58 }
   1303   },
   1304 /* andb $drb,[$sr2+] */
   1305   {
   1306     { 0, 0, 0, 0 },
   1307     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), '+', ']', 0 } },
   1308     & ifmt_addb2, { 0xc69 }
   1309   },
   1310 /* orb $drb,[$sr2+] */
   1311   {
   1312     { 0, 0, 0, 0 },
   1313     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), '+', ']', 0 } },
   1314     & ifmt_addb2, { 0xc79 }
   1315   },
   1316 /* xorb $drb,[$sr2+] */
   1317   {
   1318     { 0, 0, 0, 0 },
   1319     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), '+', ']', 0 } },
   1320     & ifmt_addb2, { 0xc59 }
   1321   },
   1322 /* and $pof$reg8,$upof16 */
   1323   {
   1324     { 0, 0, 0, 0 },
   1325     { { MNEM, ' ', OP (POF), OP (REG8), ',', OP (UPOF16), 0 } },
   1326     & ifmt_addrpof, { 0x62 }
   1327   },
   1328 /* or $pof$reg8,$upof16 */
   1329   {
   1330     { 0, 0, 0, 0 },
   1331     { { MNEM, ' ', OP (POF), OP (REG8), ',', OP (UPOF16), 0 } },
   1332     & ifmt_addrpof, { 0x72 }
   1333   },
   1334 /* xor $pof$reg8,$upof16 */
   1335   {
   1336     { 0, 0, 0, 0 },
   1337     { { MNEM, ' ', OP (POF), OP (REG8), ',', OP (UPOF16), 0 } },
   1338     & ifmt_addrpof, { 0x52 }
   1339   },
   1340 /* andb $pof$regb8,$upof16 */
   1341   {
   1342     { 0, 0, 0, 0 },
   1343     { { MNEM, ' ', OP (POF), OP (REGB8), ',', OP (UPOF16), 0 } },
   1344     & ifmt_addbrpof, { 0x63 }
   1345   },
   1346 /* orb $pof$regb8,$upof16 */
   1347   {
   1348     { 0, 0, 0, 0 },
   1349     { { MNEM, ' ', OP (POF), OP (REGB8), ',', OP (UPOF16), 0 } },
   1350     & ifmt_addbrpof, { 0x73 }
   1351   },
   1352 /* xorb $pof$regb8,$upof16 */
   1353   {
   1354     { 0, 0, 0, 0 },
   1355     { { MNEM, ' ', OP (POF), OP (REGB8), ',', OP (UPOF16), 0 } },
   1356     & ifmt_addbrpof, { 0x53 }
   1357   },
   1358 /* and $pof$upof16,$reg8 */
   1359   {
   1360     { 0, 0, 0, 0 },
   1361     { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REG8), 0 } },
   1362     & ifmt_addrpof, { 0x64 }
   1363   },
   1364 /* or $pof$upof16,$reg8 */
   1365   {
   1366     { 0, 0, 0, 0 },
   1367     { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REG8), 0 } },
   1368     & ifmt_addrpof, { 0x74 }
   1369   },
   1370 /* xor $pof$upof16,$reg8 */
   1371   {
   1372     { 0, 0, 0, 0 },
   1373     { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REG8), 0 } },
   1374     & ifmt_addrpof, { 0x54 }
   1375   },
   1376 /* andb $pof$upof16,$regb8 */
   1377   {
   1378     { 0, 0, 0, 0 },
   1379     { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGB8), 0 } },
   1380     & ifmt_addbrpof, { 0x65 }
   1381   },
   1382 /* orb $pof$upof16,$regb8 */
   1383   {
   1384     { 0, 0, 0, 0 },
   1385     { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGB8), 0 } },
   1386     & ifmt_addbrpof, { 0x75 }
   1387   },
   1388 /* xorb $pof$upof16,$regb8 */
   1389   {
   1390     { 0, 0, 0, 0 },
   1391     { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGB8), 0 } },
   1392     & ifmt_addbrpof, { 0x55 }
   1393   },
   1394 /* and $regmem8,$memgr8 */
   1395   {
   1396     { 0, 0, 0, 0 },
   1397     { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
   1398     & ifmt_addrm2, { 0x62 }
   1399   },
   1400 /* and $memgr8,$regmem8 */
   1401   {
   1402     { 0, 0, 0, 0 },
   1403     { { MNEM, ' ', OP (MEMGR8), ',', OP (REGMEM8), 0 } },
   1404     & ifmt_addrm2, { 0x64 }
   1405   },
   1406 /* and $reg8,$memory */
   1407   {
   1408     { 0, 0, 0, 0 },
   1409     { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
   1410     & ifmt_addrm, { 0x62 }
   1411   },
   1412 /* and $memory,$reg8 */
   1413   {
   1414     { 0, 0, 0, 0 },
   1415     { { MNEM, ' ', OP (MEMORY), ',', OP (REG8), 0 } },
   1416     & ifmt_addrm, { 0x64 }
   1417   },
   1418 /* or $regmem8,$memgr8 */
   1419   {
   1420     { 0, 0, 0, 0 },
   1421     { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
   1422     & ifmt_addrm2, { 0x72 }
   1423   },
   1424 /* or $memgr8,$regmem8 */
   1425   {
   1426     { 0, 0, 0, 0 },
   1427     { { MNEM, ' ', OP (MEMGR8), ',', OP (REGMEM8), 0 } },
   1428     & ifmt_addrm2, { 0x74 }
   1429   },
   1430 /* or $reg8,$memory */
   1431   {
   1432     { 0, 0, 0, 0 },
   1433     { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
   1434     & ifmt_addrm, { 0x72 }
   1435   },
   1436 /* or $memory,$reg8 */
   1437   {
   1438     { 0, 0, 0, 0 },
   1439     { { MNEM, ' ', OP (MEMORY), ',', OP (REG8), 0 } },
   1440     & ifmt_addrm, { 0x74 }
   1441   },
   1442 /* xor $regmem8,$memgr8 */
   1443   {
   1444     { 0, 0, 0, 0 },
   1445     { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
   1446     & ifmt_addrm2, { 0x52 }
   1447   },
   1448 /* xor $memgr8,$regmem8 */
   1449   {
   1450     { 0, 0, 0, 0 },
   1451     { { MNEM, ' ', OP (MEMGR8), ',', OP (REGMEM8), 0 } },
   1452     & ifmt_addrm2, { 0x54 }
   1453   },
   1454 /* xor $reg8,$memory */
   1455   {
   1456     { 0, 0, 0, 0 },
   1457     { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
   1458     & ifmt_addrm, { 0x52 }
   1459   },
   1460 /* xor $memory,$reg8 */
   1461   {
   1462     { 0, 0, 0, 0 },
   1463     { { MNEM, ' ', OP (MEMORY), ',', OP (REG8), 0 } },
   1464     & ifmt_addrm, { 0x54 }
   1465   },
   1466 /* andb $regbmem8,$memgr8 */
   1467   {
   1468     { 0, 0, 0, 0 },
   1469     { { MNEM, ' ', OP (REGBMEM8), ',', OP (MEMGR8), 0 } },
   1470     & ifmt_addbrm2, { 0x63 }
   1471   },
   1472 /* andb $memgr8,$regbmem8 */
   1473   {
   1474     { 0, 0, 0, 0 },
   1475     { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
   1476     & ifmt_addbrm2, { 0x65 }
   1477   },
   1478 /* andb $regb8,$memory */
   1479   {
   1480     { 0, 0, 0, 0 },
   1481     { { MNEM, ' ', OP (REGB8), ',', OP (MEMORY), 0 } },
   1482     & ifmt_addbrm, { 0x63 }
   1483   },
   1484 /* andb $memory,$regb8 */
   1485   {
   1486     { 0, 0, 0, 0 },
   1487     { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
   1488     & ifmt_addbrm, { 0x65 }
   1489   },
   1490 /* orb $regbmem8,$memgr8 */
   1491   {
   1492     { 0, 0, 0, 0 },
   1493     { { MNEM, ' ', OP (REGBMEM8), ',', OP (MEMGR8), 0 } },
   1494     & ifmt_addbrm2, { 0x73 }
   1495   },
   1496 /* orb $memgr8,$regbmem8 */
   1497   {
   1498     { 0, 0, 0, 0 },
   1499     { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
   1500     & ifmt_addbrm2, { 0x75 }
   1501   },
   1502 /* orb $regb8,$memory */
   1503   {
   1504     { 0, 0, 0, 0 },
   1505     { { MNEM, ' ', OP (REGB8), ',', OP (MEMORY), 0 } },
   1506     & ifmt_addbrm, { 0x73 }
   1507   },
   1508 /* orb $memory,$regb8 */
   1509   {
   1510     { 0, 0, 0, 0 },
   1511     { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
   1512     & ifmt_addbrm, { 0x75 }
   1513   },
   1514 /* xorb $regbmem8,$memgr8 */
   1515   {
   1516     { 0, 0, 0, 0 },
   1517     { { MNEM, ' ', OP (REGBMEM8), ',', OP (MEMGR8), 0 } },
   1518     & ifmt_addbrm2, { 0x53 }
   1519   },
   1520 /* xorb $memgr8,$regbmem8 */
   1521   {
   1522     { 0, 0, 0, 0 },
   1523     { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
   1524     & ifmt_addbrm2, { 0x55 }
   1525   },
   1526 /* xorb $regb8,$memory */
   1527   {
   1528     { 0, 0, 0, 0 },
   1529     { { MNEM, ' ', OP (REGB8), ',', OP (MEMORY), 0 } },
   1530     & ifmt_addbrm, { 0x53 }
   1531   },
   1532 /* xorb $memory,$regb8 */
   1533   {
   1534     { 0, 0, 0, 0 },
   1535     { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
   1536     & ifmt_addbrm, { 0x55 }
   1537   },
   1538 /* mov $dr,$sr */
   1539   {
   1540     { 0, 0, 0, 0 },
   1541     { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
   1542     & ifmt_addr, { 0xf0 }
   1543   },
   1544 /* movb $drb,$srb */
   1545   {
   1546     { 0, 0, 0, 0 },
   1547     { { MNEM, ' ', OP (DRB), ',', OP (SRB), 0 } },
   1548     & ifmt_addbr, { 0xf1 }
   1549   },
   1550 /* mov $dri,$hash$u4 */
   1551   {
   1552     { 0, 0, 0, 0 },
   1553     { { MNEM, ' ', OP (DRI), ',', OP (HASH), OP (U4), 0 } },
   1554     & ifmt_movri, { 0xe0 }
   1555   },
   1556 /* movb $srb,$hash$u4 */
   1557   {
   1558     { 0, 0, 0, 0 },
   1559     { { MNEM, ' ', OP (SRB), ',', OP (HASH), OP (U4), 0 } },
   1560     & ifmt_movbri, { 0xe1 }
   1561   },
   1562 /* mov $reg8,$hash$uimm16 */
   1563   {
   1564     { 0, 0, 0, 0 },
   1565     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
   1566     & ifmt_addrhpof, { 0xe6 }
   1567   },
   1568 /* movb $regb8,$hash$uimm8 */
   1569   {
   1570     { 0, 0, 0, 0 },
   1571     { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (UIMM8), 0 } },
   1572     & ifmt_addrbhpof, { 0xe7 }
   1573   },
   1574 /* mov $dr,[$sr] */
   1575   {
   1576     { 0, 0, 0, 0 },
   1577     { { MNEM, ' ', OP (DR), ',', '[', OP (SR), ']', 0 } },
   1578     & ifmt_addr, { 0xa8 }
   1579   },
   1580 /* movb $drb,[$sr] */
   1581   {
   1582     { 0, 0, 0, 0 },
   1583     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR), ']', 0 } },
   1584     & ifmt_movbr2, { 0xa9 }
   1585   },
   1586 /* mov [$sr],$dr */
   1587   {
   1588     { 0, 0, 0, 0 },
   1589     { { MNEM, ' ', '[', OP (SR), ']', ',', OP (DR), 0 } },
   1590     & ifmt_addr, { 0xb8 }
   1591   },
   1592 /* movb [$sr],$drb */
   1593   {
   1594     { 0, 0, 0, 0 },
   1595     { { MNEM, ' ', '[', OP (SR), ']', ',', OP (DRB), 0 } },
   1596     & ifmt_movbr2, { 0xb9 }
   1597   },
   1598 /* mov [-$sr],$dr */
   1599   {
   1600     { 0, 0, 0, 0 },
   1601     { { MNEM, ' ', '[', '-', OP (SR), ']', ',', OP (DR), 0 } },
   1602     & ifmt_addr, { 0x88 }
   1603   },
   1604 /* movb [-$sr],$drb */
   1605   {
   1606     { 0, 0, 0, 0 },
   1607     { { MNEM, ' ', '[', '-', OP (SR), ']', ',', OP (DRB), 0 } },
   1608     & ifmt_movbr2, { 0x89 }
   1609   },
   1610 /* mov $dr,[$sr+] */
   1611   {
   1612     { 0, 0, 0, 0 },
   1613     { { MNEM, ' ', OP (DR), ',', '[', OP (SR), '+', ']', 0 } },
   1614     & ifmt_addr, { 0x98 }
   1615   },
   1616 /* movb $drb,[$sr+] */
   1617   {
   1618     { 0, 0, 0, 0 },
   1619     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR), '+', ']', 0 } },
   1620     & ifmt_movbr2, { 0x99 }
   1621   },
   1622 /* mov [$dr],[$sr] */
   1623   {
   1624     { 0, 0, 0, 0 },
   1625     { { MNEM, ' ', '[', OP (DR), ']', ',', '[', OP (SR), ']', 0 } },
   1626     & ifmt_addr, { 0xc8 }
   1627   },
   1628 /* movb [$dr],[$sr] */
   1629   {
   1630     { 0, 0, 0, 0 },
   1631     { { MNEM, ' ', '[', OP (DR), ']', ',', '[', OP (SR), ']', 0 } },
   1632     & ifmt_addr, { 0xc9 }
   1633   },
   1634 /* mov [$dr+],[$sr] */
   1635   {
   1636     { 0, 0, 0, 0 },
   1637     { { MNEM, ' ', '[', OP (DR), '+', ']', ',', '[', OP (SR), ']', 0 } },
   1638     & ifmt_addr, { 0xd8 }
   1639   },
   1640 /* movb [$dr+],[$sr] */
   1641   {
   1642     { 0, 0, 0, 0 },
   1643     { { MNEM, ' ', '[', OP (DR), '+', ']', ',', '[', OP (SR), ']', 0 } },
   1644     & ifmt_addr, { 0xd9 }
   1645   },
   1646 /* mov [$dr],[$sr+] */
   1647   {
   1648     { 0, 0, 0, 0 },
   1649     { { MNEM, ' ', '[', OP (DR), ']', ',', '[', OP (SR), '+', ']', 0 } },
   1650     & ifmt_addr, { 0xe8 }
   1651   },
   1652 /* movb [$dr],[$sr+] */
   1653   {
   1654     { 0, 0, 0, 0 },
   1655     { { MNEM, ' ', '[', OP (DR), ']', ',', '[', OP (SR), '+', ']', 0 } },
   1656     & ifmt_addr, { 0xe9 }
   1657   },
   1658 /* mov $dr,[$sr+$hash$uimm16] */
   1659   {
   1660     { 0, 0, 0, 0 },
   1661     { { MNEM, ' ', OP (DR), ',', '[', OP (SR), '+', OP (HASH), OP (UIMM16), ']', 0 } },
   1662     & ifmt_mov9i, { 0xd4 }
   1663   },
   1664 /* movb $drb,[$sr+$hash$uimm16] */
   1665   {
   1666     { 0, 0, 0, 0 },
   1667     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR), '+', OP (HASH), OP (UIMM16), ']', 0 } },
   1668     & ifmt_movb9i, { 0xf4 }
   1669   },
   1670 /* mov [$sr+$hash$uimm16],$dr */
   1671   {
   1672     { 0, 0, 0, 0 },
   1673     { { MNEM, ' ', '[', OP (SR), '+', OP (HASH), OP (UIMM16), ']', ',', OP (DR), 0 } },
   1674     & ifmt_mov9i, { 0xc4 }
   1675   },
   1676 /* movb [$sr+$hash$uimm16],$drb */
   1677   {
   1678     { 0, 0, 0, 0 },
   1679     { { MNEM, ' ', '[', OP (SR), '+', OP (HASH), OP (UIMM16), ']', ',', OP (DRB), 0 } },
   1680     & ifmt_movb9i, { 0xe4 }
   1681   },
   1682 /* mov [$src2],$memory */
   1683   {
   1684     { 0, 0, 0, 0 },
   1685     { { MNEM, ' ', '[', OP (SRC2), ']', ',', OP (MEMORY), 0 } },
   1686     & ifmt_movri11, { 0x84 }
   1687   },
   1688 /* movb [$src2],$memory */
   1689   {
   1690     { 0, 0, 0, 0 },
   1691     { { MNEM, ' ', '[', OP (SRC2), ']', ',', OP (MEMORY), 0 } },
   1692     & ifmt_movri11, { 0xa4 }
   1693   },
   1694 /* mov $memory,[$src2] */
   1695   {
   1696     { 0, 0, 0, 0 },
   1697     { { MNEM, ' ', OP (MEMORY), ',', '[', OP (SRC2), ']', 0 } },
   1698     & ifmt_movri11, { 0x94 }
   1699   },
   1700 /* movb $memory,[$src2] */
   1701   {
   1702     { 0, 0, 0, 0 },
   1703     { { MNEM, ' ', OP (MEMORY), ',', '[', OP (SRC2), ']', 0 } },
   1704     & ifmt_movri11, { 0xb4 }
   1705   },
   1706 /* mov $regoff8,$hash$pof$upof16 */
   1707   {
   1708     { 0, 0, 0, 0 },
   1709     { { MNEM, ' ', OP (REGOFF8), ',', OP (HASH), OP (POF), OP (UPOF16), 0 } },
   1710     & ifmt_movehm5, { 0xe6 }
   1711   },
   1712 /* mov $regoff8,$hash$pag$upag16 */
   1713   {
   1714     { 0, 0, 0, 0 },
   1715     { { MNEM, ' ', OP (REGOFF8), ',', OP (HASH), OP (PAG), OP (UPAG16), 0 } },
   1716     & ifmt_movehm6, { 0xe6 }
   1717   },
   1718 /* mov $regoff8,$hash$segm$useg16 */
   1719   {
   1720     { 0, 0, 0, 0 },
   1721     { { MNEM, ' ', OP (REGOFF8), ',', OP (HASH), OP (SEGM), OP (USEG16), 0 } },
   1722     & ifmt_movehm7, { 0xe6 }
   1723   },
   1724 /* mov $regoff8,$hash$sof$usof16 */
   1725   {
   1726     { 0, 0, 0, 0 },
   1727     { { MNEM, ' ', OP (REGOFF8), ',', OP (HASH), OP (SOF), OP (USOF16), 0 } },
   1728     & ifmt_movehm8, { 0xe6 }
   1729   },
   1730 /* movb $regb8,$hash$pof$uimm8 */
   1731   {
   1732     { 0, 0, 0, 0 },
   1733     { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (POF), OP (UIMM8), 0 } },
   1734     & ifmt_addrbhpof, { 0xe7 }
   1735   },
   1736 /* movb $regoff8,$hash$pag$uimm8 */
   1737   {
   1738     { 0, 0, 0, 0 },
   1739     { { MNEM, ' ', OP (REGOFF8), ',', OP (HASH), OP (PAG), OP (UIMM8), 0 } },
   1740     & ifmt_movehm10, { 0xe7 }
   1741   },
   1742 /* mov $regoff8,$pof$upof16 */
   1743   {
   1744     { 0, 0, 0, 0 },
   1745     { { MNEM, ' ', OP (REGOFF8), ',', OP (POF), OP (UPOF16), 0 } },
   1746     & ifmt_movehm5, { 0xf2 }
   1747   },
   1748 /* movb $regb8,$pof$upof16 */
   1749   {
   1750     { 0, 0, 0, 0 },
   1751     { { MNEM, ' ', OP (REGB8), ',', OP (POF), OP (UPOF16), 0 } },
   1752     & ifmt_addbrpof, { 0xf3 }
   1753   },
   1754 /* mov $regoff8,$pag$upag16 */
   1755   {
   1756     { 0, 0, 0, 0 },
   1757     { { MNEM, ' ', OP (REGOFF8), ',', OP (PAG), OP (UPAG16), 0 } },
   1758     & ifmt_movehm6, { 0xf2 }
   1759   },
   1760 /* movb $regb8,$pag$upag16 */
   1761   {
   1762     { 0, 0, 0, 0 },
   1763     { { MNEM, ' ', OP (REGB8), ',', OP (PAG), OP (UPAG16), 0 } },
   1764     & ifmt_addbrpag, { 0xf3 }
   1765   },
   1766 /* mov $pof$upof16,$regoff8 */
   1767   {
   1768     { 0, 0, 0, 0 },
   1769     { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGOFF8), 0 } },
   1770     & ifmt_movehm5, { 0xf6 }
   1771   },
   1772 /* movb $pof$upof16,$regb8 */
   1773   {
   1774     { 0, 0, 0, 0 },
   1775     { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGB8), 0 } },
   1776     & ifmt_addbrpof, { 0xf7 }
   1777   },
   1778 /* mov $dri,$hash$pof$u4 */
   1779   {
   1780     { 0, 0, 0, 0 },
   1781     { { MNEM, ' ', OP (DRI), ',', OP (HASH), OP (POF), OP (U4), 0 } },
   1782     & ifmt_movri, { 0xe0 }
   1783   },
   1784 /* movb $srb,$hash$pof$u4 */
   1785   {
   1786     { 0, 0, 0, 0 },
   1787     { { MNEM, ' ', OP (SRB), ',', OP (HASH), OP (POF), OP (U4), 0 } },
   1788     & ifmt_movbri, { 0xe1 }
   1789   },
   1790 /* mov $dri,$hash$pag$u4 */
   1791   {
   1792     { 0, 0, 0, 0 },
   1793     { { MNEM, ' ', OP (DRI), ',', OP (HASH), OP (PAG), OP (U4), 0 } },
   1794     & ifmt_movri, { 0xe0 }
   1795   },
   1796 /* movb $srb,$hash$pag$u4 */
   1797   {
   1798     { 0, 0, 0, 0 },
   1799     { { MNEM, ' ', OP (SRB), ',', OP (HASH), OP (PAG), OP (U4), 0 } },
   1800     & ifmt_movbri, { 0xe1 }
   1801   },
   1802 /* mov $regmem8,$memgr8 */
   1803   {
   1804     { 0, 0, 0, 0 },
   1805     { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
   1806     & ifmt_addrm2, { 0xf2 }
   1807   },
   1808 /* mov $memgr8,$regmem8 */
   1809   {
   1810     { 0, 0, 0, 0 },
   1811     { { MNEM, ' ', OP (MEMGR8), ',', OP (REGMEM8), 0 } },
   1812     & ifmt_addrm2, { 0xf6 }
   1813   },
   1814 /* mov $reg8,$memory */
   1815   {
   1816     { 0, 0, 0, 0 },
   1817     { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
   1818     & ifmt_addrm, { 0xf2 }
   1819   },
   1820 /* mov $memory,$reg8 */
   1821   {
   1822     { 0, 0, 0, 0 },
   1823     { { MNEM, ' ', OP (MEMORY), ',', OP (REG8), 0 } },
   1824     & ifmt_addrm, { 0xf6 }
   1825   },
   1826 /* movb $regbmem8,$memgr8 */
   1827   {
   1828     { 0, 0, 0, 0 },
   1829     { { MNEM, ' ', OP (REGBMEM8), ',', OP (MEMGR8), 0 } },
   1830     & ifmt_addbrm2, { 0xf3 }
   1831   },
   1832 /* movb $memgr8,$regbmem8 */
   1833   {
   1834     { 0, 0, 0, 0 },
   1835     { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
   1836     & ifmt_addbrm2, { 0xf7 }
   1837   },
   1838 /* movb $regb8,$memory */
   1839   {
   1840     { 0, 0, 0, 0 },
   1841     { { MNEM, ' ', OP (REGB8), ',', OP (MEMORY), 0 } },
   1842     & ifmt_addbrm, { 0xf3 }
   1843   },
   1844 /* movb $memory,$regb8 */
   1845   {
   1846     { 0, 0, 0, 0 },
   1847     { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
   1848     & ifmt_addbrm, { 0xf7 }
   1849   },
   1850 /* movbs $sr,$drb */
   1851   {
   1852     { 0, 0, 0, 0 },
   1853     { { MNEM, ' ', OP (SR), ',', OP (DRB), 0 } },
   1854     & ifmt_movbr2, { 0xd0 }
   1855   },
   1856 /* movbz $sr,$drb */
   1857   {
   1858     { 0, 0, 0, 0 },
   1859     { { MNEM, ' ', OP (SR), ',', OP (DRB), 0 } },
   1860     & ifmt_movbr2, { 0xc0 }
   1861   },
   1862 /* movbs $regmem8,$pof$upof16 */
   1863   {
   1864     { 0, 0, 0, 0 },
   1865     { { MNEM, ' ', OP (REGMEM8), ',', OP (POF), OP (UPOF16), 0 } },
   1866     & ifmt_movbsrpofm, { 0xd2 }
   1867   },
   1868 /* movbs $pof$upof16,$regbmem8 */
   1869   {
   1870     { 0, 0, 0, 0 },
   1871     { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGBMEM8), 0 } },
   1872     & ifmt_movbspofmr, { 0xd5 }
   1873   },
   1874 /* movbz $reg8,$pof$upof16 */
   1875   {
   1876     { 0, 0, 0, 0 },
   1877     { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
   1878     & ifmt_addrpof, { 0xc2 }
   1879   },
   1880 /* movbz $pof$upof16,$regb8 */
   1881   {
   1882     { 0, 0, 0, 0 },
   1883     { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGB8), 0 } },
   1884     & ifmt_addbrpof, { 0xc5 }
   1885   },
   1886 /* movbs $regmem8,$memgr8 */
   1887   {
   1888     { 0, 0, 0, 0 },
   1889     { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
   1890     & ifmt_addrm2, { 0xd2 }
   1891   },
   1892 /* movbs $memgr8,$regbmem8 */
   1893   {
   1894     { 0, 0, 0, 0 },
   1895     { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
   1896     & ifmt_addbrm2, { 0xd5 }
   1897   },
   1898 /* movbs $reg8,$memory */
   1899   {
   1900     { 0, 0, 0, 0 },
   1901     { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
   1902     & ifmt_addrm, { 0xd2 }
   1903   },
   1904 /* movbs $memory,$regb8 */
   1905   {
   1906     { 0, 0, 0, 0 },
   1907     { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
   1908     & ifmt_addbrm, { 0xd5 }
   1909   },
   1910 /* movbz $regmem8,$memgr8 */
   1911   {
   1912     { 0, 0, 0, 0 },
   1913     { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
   1914     & ifmt_addrm2, { 0xc2 }
   1915   },
   1916 /* movbz $memgr8,$regbmem8 */
   1917   {
   1918     { 0, 0, 0, 0 },
   1919     { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
   1920     & ifmt_addbrm2, { 0xc5 }
   1921   },
   1922 /* movbz $reg8,$memory */
   1923   {
   1924     { 0, 0, 0, 0 },
   1925     { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
   1926     & ifmt_addrm, { 0xc2 }
   1927   },
   1928 /* movbz $memory,$regb8 */
   1929   {
   1930     { 0, 0, 0, 0 },
   1931     { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
   1932     & ifmt_addbrm, { 0xc5 }
   1933   },
   1934 /* movbs $sr,$drb */
   1935   {
   1936     { 0, 0, 0, 0 },
   1937     { { MNEM, ' ', OP (SR), ',', OP (DRB), 0 } },
   1938     & ifmt_movbr2, { 0xd0 }
   1939   },
   1940 /* movbz $sr,$drb */
   1941   {
   1942     { 0, 0, 0, 0 },
   1943     { { MNEM, ' ', OP (SR), ',', OP (DRB), 0 } },
   1944     & ifmt_movbr2, { 0xc0 }
   1945   },
   1946 /* jmpa+ $extcond,$caddr */
   1947   {
   1948     { 0, 0, 0, 0 },
   1949     { { MNEM, ' ', OP (EXTCOND), ',', OP (CADDR), 0 } },
   1950     & ifmt_jmpa0, { 0xea }
   1951   },
   1952 /* jmpa $extcond,$caddr */
   1953   {
   1954     { 0, 0, 0, 0 },
   1955     { { MNEM, ' ', OP (EXTCOND), ',', OP (CADDR), 0 } },
   1956     & ifmt_jmpa0, { 0xea }
   1957   },
   1958 /* jmpa- $extcond,$caddr */
   1959   {
   1960     { 0, 0, 0, 0 },
   1961     { { MNEM, ' ', OP (EXTCOND), ',', OP (CADDR), 0 } },
   1962     & ifmt_jmpa_, { 0x1ea }
   1963   },
   1964 /* jmpi $icond,[$sr] */
   1965   {
   1966     { 0, 0, 0, 0 },
   1967     { { MNEM, ' ', OP (ICOND), ',', '[', OP (SR), ']', 0 } },
   1968     & ifmt_jmpi, { 0x9c }
   1969   },
   1970 /* jmpr $cond,$rel */
   1971   {
   1972     { 0, 0, 0, 0 },
   1973     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   1974     & ifmt_jmpr_nenz, { 0x3d }
   1975   },
   1976 /* jmpr $cond,$rel */
   1977   {
   1978     { 0, 0, 0, 0 },
   1979     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   1980     & ifmt_jmpr_nenz, { 0xad }
   1981   },
   1982 /* jmpr $cond,$rel */
   1983   {
   1984     { 0, 0, 0, 0 },
   1985     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   1986     & ifmt_jmpr_nenz, { 0x2d }
   1987   },
   1988 /* jmpr $cond,$rel */
   1989   {
   1990     { 0, 0, 0, 0 },
   1991     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   1992     & ifmt_jmpr_nenz, { 0x4d }
   1993   },
   1994 /* jmpr $cond,$rel */
   1995   {
   1996     { 0, 0, 0, 0 },
   1997     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   1998     & ifmt_jmpr_nenz, { 0x5d }
   1999   },
   2000 /* jmpr $cond,$rel */
   2001   {
   2002     { 0, 0, 0, 0 },
   2003     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   2004     & ifmt_jmpr_nenz, { 0x6d }
   2005   },
   2006 /* jmpr $cond,$rel */
   2007   {
   2008     { 0, 0, 0, 0 },
   2009     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   2010     & ifmt_jmpr_nenz, { 0x7d }
   2011   },
   2012 /* jmpr $cond,$rel */
   2013   {
   2014     { 0, 0, 0, 0 },
   2015     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   2016     & ifmt_jmpr_nenz, { 0x8d }
   2017   },
   2018 /* jmpr $cond,$rel */
   2019   {
   2020     { 0, 0, 0, 0 },
   2021     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   2022     & ifmt_jmpr_nenz, { 0x9d }
   2023   },
   2024 /* jmpr $cond,$rel */
   2025   {
   2026     { 0, 0, 0, 0 },
   2027     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   2028     & ifmt_jmpr_nenz, { 0x2d }
   2029   },
   2030 /* jmpr $cond,$rel */
   2031   {
   2032     { 0, 0, 0, 0 },
   2033     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   2034     & ifmt_jmpr_nenz, { 0x3d }
   2035   },
   2036 /* jmpr $cond,$rel */
   2037   {
   2038     { 0, 0, 0, 0 },
   2039     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   2040     & ifmt_jmpr_nenz, { 0x8d }
   2041   },
   2042 /* jmpr $cond,$rel */
   2043   {
   2044     { 0, 0, 0, 0 },
   2045     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   2046     & ifmt_jmpr_nenz, { 0xfd }
   2047   },
   2048 /* jmpr $cond,$rel */
   2049   {
   2050     { 0, 0, 0, 0 },
   2051     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   2052     & ifmt_jmpr_nenz, { 0x9d }
   2053   },
   2054 /* jmpr $cond,$rel */
   2055   {
   2056     { 0, 0, 0, 0 },
   2057     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   2058     & ifmt_jmpr_nenz, { 0xed }
   2059   },
   2060 /* jmpr $cond,$rel */
   2061   {
   2062     { 0, 0, 0, 0 },
   2063     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   2064     & ifmt_jmpr_nenz, { 0xbd }
   2065   },
   2066 /* jmpr $cond,$rel */
   2067   {
   2068     { 0, 0, 0, 0 },
   2069     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   2070     & ifmt_jmpr_nenz, { 0xdd }
   2071   },
   2072 /* jmpr $cond,$rel */
   2073   {
   2074     { 0, 0, 0, 0 },
   2075     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   2076     & ifmt_jmpr_nenz, { 0x1d }
   2077   },
   2078 /* jmpr $cond,$rel */
   2079   {
   2080     { 0, 0, 0, 0 },
   2081     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   2082     & ifmt_jmpr_nenz, { 0xd }
   2083   },
   2084 /* jmpr $cond,$rel */
   2085   {
   2086     { 0, 0, 0, 0 },
   2087     { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
   2088     & ifmt_jmpr_nenz, { 0xcd }
   2089   },
   2090 /* jmps $hash$segm$useg8,$hash$sof$usof16 */
   2091   {
   2092     { 0, 0, 0, 0 },
   2093     { { MNEM, ' ', OP (HASH), OP (SEGM), OP (USEG8), ',', OP (HASH), OP (SOF), OP (USOF16), 0 } },
   2094     & ifmt_jmpseg, { 0xfa }
   2095   },
   2096 /* jmps $seg,$caddr */
   2097   {
   2098     { 0, 0, 0, 0 },
   2099     { { MNEM, ' ', OP (SEG), ',', OP (CADDR), 0 } },
   2100     & ifmt_jmps, { 0xfa }
   2101   },
   2102 /* jb $genreg$dot$qlobit,$relhi */
   2103   {
   2104     { 0, 0, 0, 0 },
   2105     { { MNEM, ' ', OP (GENREG), OP (DOT), OP (QLOBIT), ',', OP (RELHI), 0 } },
   2106     & ifmt_jb, { 0x8a }
   2107   },
   2108 /* jbc $genreg$dot$qlobit,$relhi */
   2109   {
   2110     { 0, 0, 0, 0 },
   2111     { { MNEM, ' ', OP (GENREG), OP (DOT), OP (QLOBIT), ',', OP (RELHI), 0 } },
   2112     & ifmt_jb, { 0xaa }
   2113   },
   2114 /* jnb $genreg$dot$qlobit,$relhi */
   2115   {
   2116     { 0, 0, 0, 0 },
   2117     { { MNEM, ' ', OP (GENREG), OP (DOT), OP (QLOBIT), ',', OP (RELHI), 0 } },
   2118     & ifmt_jb, { 0x9a }
   2119   },
   2120 /* jnbs $genreg$dot$qlobit,$relhi */
   2121   {
   2122     { 0, 0, 0, 0 },
   2123     { { MNEM, ' ', OP (GENREG), OP (DOT), OP (QLOBIT), ',', OP (RELHI), 0 } },
   2124     & ifmt_jb, { 0xba }
   2125   },
   2126 /* calla+ $extcond,$caddr */
   2127   {
   2128     { 0, 0, 0, 0 },
   2129     { { MNEM, ' ', OP (EXTCOND), ',', OP (CADDR), 0 } },
   2130     & ifmt_calla0, { 0xca }
   2131   },
   2132 /* calla $extcond,$caddr */
   2133   {
   2134     { 0, 0, 0, 0 },
   2135     { { MNEM, ' ', OP (EXTCOND), ',', OP (CADDR), 0 } },
   2136     & ifmt_calla0, { 0xca }
   2137   },
   2138 /* calla- $extcond,$caddr */
   2139   {
   2140     { 0, 0, 0, 0 },
   2141     { { MNEM, ' ', OP (EXTCOND), ',', OP (CADDR), 0 } },
   2142     & ifmt_calla_, { 0x1ca }
   2143   },
   2144 /* calli $icond,[$sr] */
   2145   {
   2146     { 0, 0, 0, 0 },
   2147     { { MNEM, ' ', OP (ICOND), ',', '[', OP (SR), ']', 0 } },
   2148     & ifmt_jmpi, { 0xab }
   2149   },
   2150 /* callr $rel */
   2151   {
   2152     { 0, 0, 0, 0 },
   2153     { { MNEM, ' ', OP (REL), 0 } },
   2154     & ifmt_callr, { 0xbb }
   2155   },
   2156 /* calls $hash$segm$useg8,$hash$sof$usof16 */
   2157   {
   2158     { 0, 0, 0, 0 },
   2159     { { MNEM, ' ', OP (HASH), OP (SEGM), OP (USEG8), ',', OP (HASH), OP (SOF), OP (USOF16), 0 } },
   2160     & ifmt_callseg, { 0xda }
   2161   },
   2162 /* calls $seg,$caddr */
   2163   {
   2164     { 0, 0, 0, 0 },
   2165     { { MNEM, ' ', OP (SEG), ',', OP (CADDR), 0 } },
   2166     & ifmt_jmps, { 0xda }
   2167   },
   2168 /* pcall $reg8,$caddr */
   2169   {
   2170     { 0, 0, 0, 0 },
   2171     { { MNEM, ' ', OP (REG8), ',', OP (CADDR), 0 } },
   2172     & ifmt_pcall, { 0xe2 }
   2173   },
   2174 /* trap $hash$uimm7 */
   2175   {
   2176     { 0, 0, 0, 0 },
   2177     { { MNEM, ' ', OP (HASH), OP (UIMM7), 0 } },
   2178     & ifmt_trap, { 0x9b }
   2179   },
   2180 /* ret */
   2181   {
   2182     { 0, 0, 0, 0 },
   2183     { { MNEM, 0 } },
   2184     & ifmt_ret, { 0xcb }
   2185   },
   2186 /* rets */
   2187   {
   2188     { 0, 0, 0, 0 },
   2189     { { MNEM, 0 } },
   2190     & ifmt_ret, { 0xdb }
   2191   },
   2192 /* retp $reg8 */
   2193   {
   2194     { 0, 0, 0, 0 },
   2195     { { MNEM, ' ', OP (REG8), 0 } },
   2196     & ifmt_retp, { 0xeb }
   2197   },
   2198 /* reti */
   2199   {
   2200     { 0, 0, 0, 0 },
   2201     { { MNEM, 0 } },
   2202     & ifmt_reti, { 0x88fb }
   2203   },
   2204 /* pop $reg8 */
   2205   {
   2206     { 0, 0, 0, 0 },
   2207     { { MNEM, ' ', OP (REG8), 0 } },
   2208     & ifmt_retp, { 0xfc }
   2209   },
   2210 /* push $reg8 */
   2211   {
   2212     { 0, 0, 0, 0 },
   2213     { { MNEM, ' ', OP (REG8), 0 } },
   2214     & ifmt_retp, { 0xec }
   2215   },
   2216 /* scxt $reg8,$hash$uimm16 */
   2217   {
   2218     { 0, 0, 0, 0 },
   2219     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
   2220     & ifmt_addrhpof, { 0xc6 }
   2221   },
   2222 /* scxt $reg8,$pof$upof16 */
   2223   {
   2224     { 0, 0, 0, 0 },
   2225     { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
   2226     & ifmt_addrpof, { 0xd6 }
   2227   },
   2228 /* scxt $regmem8,$memgr8 */
   2229   {
   2230     { 0, 0, 0, 0 },
   2231     { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
   2232     & ifmt_addrm2, { 0xd6 }
   2233   },
   2234 /* scxt $reg8,$memory */
   2235   {
   2236     { 0, 0, 0, 0 },
   2237     { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
   2238     & ifmt_addrm, { 0xd6 }
   2239   },
   2240 /* nop */
   2241   {
   2242     { 0, 0, 0, 0 },
   2243     { { MNEM, 0 } },
   2244     & ifmt_ret, { 0xcc }
   2245   },
   2246 /* srst */
   2247   {
   2248     { 0, 0, 0, 0 },
   2249     { { MNEM, 0 } },
   2250     & ifmt_srstm, { 0xb7b748b7 }
   2251   },
   2252 /* idle */
   2253   {
   2254     { 0, 0, 0, 0 },
   2255     { { MNEM, 0 } },
   2256     & ifmt_srstm, { 0x87877887 }
   2257   },
   2258 /* pwrdn */
   2259   {
   2260     { 0, 0, 0, 0 },
   2261     { { MNEM, 0 } },
   2262     & ifmt_srstm, { 0x97976897 }
   2263   },
   2264 /* diswdt */
   2265   {
   2266     { 0, 0, 0, 0 },
   2267     { { MNEM, 0 } },
   2268     & ifmt_srstm, { 0xa5a55aa5 }
   2269   },
   2270 /* enwdt */
   2271   {
   2272     { 0, 0, 0, 0 },
   2273     { { MNEM, 0 } },
   2274     & ifmt_srstm, { 0x85857a85 }
   2275   },
   2276 /* einit */
   2277   {
   2278     { 0, 0, 0, 0 },
   2279     { { MNEM, 0 } },
   2280     & ifmt_srstm, { 0xb5b54ab5 }
   2281   },
   2282 /* srvwdt */
   2283   {
   2284     { 0, 0, 0, 0 },
   2285     { { MNEM, 0 } },
   2286     & ifmt_srstm, { 0xa7a758a7 }
   2287   },
   2288 /* sbrk */
   2289   {
   2290     { 0, 0, 0, 0 },
   2291     { { MNEM, 0 } },
   2292     & ifmt_ret, { 0x8c }
   2293   },
   2294 /* atomic $hash$uimm2 */
   2295   {
   2296     { 0, 0, 0, 0 },
   2297     { { MNEM, ' ', OP (HASH), OP (UIMM2), 0 } },
   2298     & ifmt_atomic, { 0xd1 }
   2299   },
   2300 /* extr $hash$uimm2 */
   2301   {
   2302     { 0, 0, 0, 0 },
   2303     { { MNEM, ' ', OP (HASH), OP (UIMM2), 0 } },
   2304     & ifmt_atomic, { 0x80d1 }
   2305   },
   2306 /* extp $sr,$hash$uimm2 */
   2307   {
   2308     { 0, 0, 0, 0 },
   2309     { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM2), 0 } },
   2310     & ifmt_extp, { 0x40dc }
   2311   },
   2312 /* extp $hash$pagenum,$hash$uimm2 */
   2313   {
   2314     { 0, 0, 0, 0 },
   2315     { { MNEM, ' ', OP (HASH), OP (PAGENUM), ',', OP (HASH), OP (UIMM2), 0 } },
   2316     & ifmt_extp1, { 0x40d7 }
   2317   },
   2318 /* extp $hash$pag$upag16,$hash$uimm2 */
   2319   {
   2320     { 0, 0, 0, 0 },
   2321     { { MNEM, ' ', OP (HASH), OP (PAG), OP (UPAG16), ',', OP (HASH), OP (UIMM2), 0 } },
   2322     & ifmt_extpg1, { 0x40d7 }
   2323   },
   2324 /* extpr $sr,$hash$uimm2 */
   2325   {
   2326     { 0, 0, 0, 0 },
   2327     { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM2), 0 } },
   2328     & ifmt_extp, { 0xc0dc }
   2329   },
   2330 /* extpr $hash$pagenum,$hash$uimm2 */
   2331   {
   2332     { 0, 0, 0, 0 },
   2333     { { MNEM, ' ', OP (HASH), OP (PAGENUM), ',', OP (HASH), OP (UIMM2), 0 } },
   2334     & ifmt_extp1, { 0xc0d7 }
   2335   },
   2336 /* exts $sr,$hash$uimm2 */
   2337   {
   2338     { 0, 0, 0, 0 },
   2339     { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM2), 0 } },
   2340     & ifmt_extp, { 0xdc }
   2341   },
   2342 /* exts $hash$seghi8,$hash$uimm2 */
   2343   {
   2344     { 0, 0, 0, 0 },
   2345     { { MNEM, ' ', OP (HASH), OP (SEGHI8), ',', OP (HASH), OP (UIMM2), 0 } },
   2346     & ifmt_exts1, { 0xd7 }
   2347   },
   2348 /* extsr $sr,$hash$uimm2 */
   2349   {
   2350     { 0, 0, 0, 0 },
   2351     { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM2), 0 } },
   2352     & ifmt_extp, { 0x80dc }
   2353   },
   2354 /* extsr $hash$seghi8,$hash$uimm2 */
   2355   {
   2356     { 0, 0, 0, 0 },
   2357     { { MNEM, ' ', OP (HASH), OP (SEGHI8), ',', OP (HASH), OP (UIMM2), 0 } },
   2358     & ifmt_exts1, { 0x80d7 }
   2359   },
   2360 /* prior $dr,$sr */
   2361   {
   2362     { 0, 0, 0, 0 },
   2363     { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
   2364     & ifmt_addr, { 0x2b }
   2365   },
   2366 /* bclr $RegNam */
   2367   {
   2368     { 0, 0, 0, 0 },
   2369     { { MNEM, ' ', OP (REGNAM), 0 } },
   2370     & ifmt_bclr18, { 0xbe }
   2371   },
   2372 /* bclr $reg8$dot$qbit */
   2373   {
   2374     { 0, 0, 0, 0 },
   2375     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2376     & ifmt_bclr0, { 0xe }
   2377   },
   2378 /* bclr $reg8$dot$qbit */
   2379   {
   2380     { 0, 0, 0, 0 },
   2381     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2382     & ifmt_bclr0, { 0x1e }
   2383   },
   2384 /* bclr $reg8$dot$qbit */
   2385   {
   2386     { 0, 0, 0, 0 },
   2387     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2388     & ifmt_bclr0, { 0x2e }
   2389   },
   2390 /* bclr $reg8$dot$qbit */
   2391   {
   2392     { 0, 0, 0, 0 },
   2393     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2394     & ifmt_bclr0, { 0x3e }
   2395   },
   2396 /* bclr $reg8$dot$qbit */
   2397   {
   2398     { 0, 0, 0, 0 },
   2399     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2400     & ifmt_bclr0, { 0x4e }
   2401   },
   2402 /* bclr $reg8$dot$qbit */
   2403   {
   2404     { 0, 0, 0, 0 },
   2405     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2406     & ifmt_bclr0, { 0x5e }
   2407   },
   2408 /* bclr $reg8$dot$qbit */
   2409   {
   2410     { 0, 0, 0, 0 },
   2411     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2412     & ifmt_bclr0, { 0x6e }
   2413   },
   2414 /* bclr $reg8$dot$qbit */
   2415   {
   2416     { 0, 0, 0, 0 },
   2417     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2418     & ifmt_bclr0, { 0x7e }
   2419   },
   2420 /* bclr $reg8$dot$qbit */
   2421   {
   2422     { 0, 0, 0, 0 },
   2423     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2424     & ifmt_bclr0, { 0x8e }
   2425   },
   2426 /* bclr $reg8$dot$qbit */
   2427   {
   2428     { 0, 0, 0, 0 },
   2429     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2430     & ifmt_bclr0, { 0x9e }
   2431   },
   2432 /* bclr $reg8$dot$qbit */
   2433   {
   2434     { 0, 0, 0, 0 },
   2435     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2436     & ifmt_bclr0, { 0xae }
   2437   },
   2438 /* bclr $reg8$dot$qbit */
   2439   {
   2440     { 0, 0, 0, 0 },
   2441     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2442     & ifmt_bclr0, { 0xbe }
   2443   },
   2444 /* bclr $reg8$dot$qbit */
   2445   {
   2446     { 0, 0, 0, 0 },
   2447     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2448     & ifmt_bclr0, { 0xce }
   2449   },
   2450 /* bclr $reg8$dot$qbit */
   2451   {
   2452     { 0, 0, 0, 0 },
   2453     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2454     & ifmt_bclr0, { 0xde }
   2455   },
   2456 /* bclr $reg8$dot$qbit */
   2457   {
   2458     { 0, 0, 0, 0 },
   2459     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2460     & ifmt_bclr0, { 0xee }
   2461   },
   2462 /* bclr $reg8$dot$qbit */
   2463   {
   2464     { 0, 0, 0, 0 },
   2465     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2466     & ifmt_bclr0, { 0xfe }
   2467   },
   2468 /* bset $RegNam */
   2469   {
   2470     { 0, 0, 0, 0 },
   2471     { { MNEM, ' ', OP (REGNAM), 0 } },
   2472     & ifmt_bclr18, { 0xbf }
   2473   },
   2474 /* bset $reg8$dot$qbit */
   2475   {
   2476     { 0, 0, 0, 0 },
   2477     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2478     & ifmt_bclr0, { 0xf }
   2479   },
   2480 /* bset $reg8$dot$qbit */
   2481   {
   2482     { 0, 0, 0, 0 },
   2483     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2484     & ifmt_bclr0, { 0x1f }
   2485   },
   2486 /* bset $reg8$dot$qbit */
   2487   {
   2488     { 0, 0, 0, 0 },
   2489     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2490     & ifmt_bclr0, { 0x2f }
   2491   },
   2492 /* bset $reg8$dot$qbit */
   2493   {
   2494     { 0, 0, 0, 0 },
   2495     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2496     & ifmt_bclr0, { 0x3f }
   2497   },
   2498 /* bset $reg8$dot$qbit */
   2499   {
   2500     { 0, 0, 0, 0 },
   2501     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2502     & ifmt_bclr0, { 0x4f }
   2503   },
   2504 /* bset $reg8$dot$qbit */
   2505   {
   2506     { 0, 0, 0, 0 },
   2507     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2508     & ifmt_bclr0, { 0x5f }
   2509   },
   2510 /* bset $reg8$dot$qbit */
   2511   {
   2512     { 0, 0, 0, 0 },
   2513     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2514     & ifmt_bclr0, { 0x6f }
   2515   },
   2516 /* bset $reg8$dot$qbit */
   2517   {
   2518     { 0, 0, 0, 0 },
   2519     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2520     & ifmt_bclr0, { 0x7f }
   2521   },
   2522 /* bset $reg8$dot$qbit */
   2523   {
   2524     { 0, 0, 0, 0 },
   2525     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2526     & ifmt_bclr0, { 0x8f }
   2527   },
   2528 /* bset $reg8$dot$qbit */
   2529   {
   2530     { 0, 0, 0, 0 },
   2531     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2532     & ifmt_bclr0, { 0x9f }
   2533   },
   2534 /* bset $reg8$dot$qbit */
   2535   {
   2536     { 0, 0, 0, 0 },
   2537     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2538     & ifmt_bclr0, { 0xaf }
   2539   },
   2540 /* bset $reg8$dot$qbit */
   2541   {
   2542     { 0, 0, 0, 0 },
   2543     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2544     & ifmt_bclr0, { 0xbf }
   2545   },
   2546 /* bset $reg8$dot$qbit */
   2547   {
   2548     { 0, 0, 0, 0 },
   2549     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2550     & ifmt_bclr0, { 0xcf }
   2551   },
   2552 /* bset $reg8$dot$qbit */
   2553   {
   2554     { 0, 0, 0, 0 },
   2555     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2556     & ifmt_bclr0, { 0xdf }
   2557   },
   2558 /* bset $reg8$dot$qbit */
   2559   {
   2560     { 0, 0, 0, 0 },
   2561     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2562     & ifmt_bclr0, { 0xef }
   2563   },
   2564 /* bset $reg8$dot$qbit */
   2565   {
   2566     { 0, 0, 0, 0 },
   2567     { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
   2568     & ifmt_bclr0, { 0xff }
   2569   },
   2570 /* bmov $reghi8$dot$qhibit,$reg8$dot$qlobit */
   2571   {
   2572     { 0, 0, 0, 0 },
   2573     { { MNEM, ' ', OP (REGHI8), OP (DOT), OP (QHIBIT), ',', OP (REG8), OP (DOT), OP (QLOBIT), 0 } },
   2574     & ifmt_bmov, { 0x4a }
   2575   },
   2576 /* bmovn $reghi8$dot$qhibit,$reg8$dot$qlobit */
   2577   {
   2578     { 0, 0, 0, 0 },
   2579     { { MNEM, ' ', OP (REGHI8), OP (DOT), OP (QHIBIT), ',', OP (REG8), OP (DOT), OP (QLOBIT), 0 } },
   2580     & ifmt_bmov, { 0x3a }
   2581   },
   2582 /* band $reghi8$dot$qhibit,$reg8$dot$qlobit */
   2583   {
   2584     { 0, 0, 0, 0 },
   2585     { { MNEM, ' ', OP (REGHI8), OP (DOT), OP (QHIBIT), ',', OP (REG8), OP (DOT), OP (QLOBIT), 0 } },
   2586     & ifmt_bmov, { 0x6a }
   2587   },
   2588 /* bor $reghi8$dot$qhibit,$reg8$dot$qlobit */
   2589   {
   2590     { 0, 0, 0, 0 },
   2591     { { MNEM, ' ', OP (REGHI8), OP (DOT), OP (QHIBIT), ',', OP (REG8), OP (DOT), OP (QLOBIT), 0 } },
   2592     & ifmt_bmov, { 0x5a }
   2593   },
   2594 /* bxor $reghi8$dot$qhibit,$reg8$dot$qlobit */
   2595   {
   2596     { 0, 0, 0, 0 },
   2597     { { MNEM, ' ', OP (REGHI8), OP (DOT), OP (QHIBIT), ',', OP (REG8), OP (DOT), OP (QLOBIT), 0 } },
   2598     & ifmt_bmov, { 0x7a }
   2599   },
   2600 /* bcmp $reghi8$dot$qhibit,$reg8$dot$qlobit */
   2601   {
   2602     { 0, 0, 0, 0 },
   2603     { { MNEM, ' ', OP (REGHI8), OP (DOT), OP (QHIBIT), ',', OP (REG8), OP (DOT), OP (QLOBIT), 0 } },
   2604     & ifmt_bmov, { 0x2a }
   2605   },
   2606 /* bfldl $reg8,$hash$mask8,$hash$datahi8 */
   2607   {
   2608     { 0, 0, 0, 0 },
   2609     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (MASK8), ',', OP (HASH), OP (DATAHI8), 0 } },
   2610     & ifmt_bfldl, { 0xa }
   2611   },
   2612 /* bfldh $reg8,$hash$masklo8,$hash$data8 */
   2613   {
   2614     { 0, 0, 0, 0 },
   2615     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (MASKLO8), ',', OP (HASH), OP (DATA8), 0 } },
   2616     & ifmt_bfldh, { 0x1a }
   2617   },
   2618 /* cmp $src1,$src2 */
   2619   {
   2620     { 0, 0, 0, 0 },
   2621     { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 } },
   2622     & ifmt_muls, { 0x40 }
   2623   },
   2624 /* cmpb $drb,$srb */
   2625   {
   2626     { 0, 0, 0, 0 },
   2627     { { MNEM, ' ', OP (DRB), ',', OP (SRB), 0 } },
   2628     & ifmt_addbr, { 0x41 }
   2629   },
   2630 /* cmp $src1,$hash$uimm3 */
   2631   {
   2632     { 0, 0, 0, 0 },
   2633     { { MNEM, ' ', OP (SRC1), ',', OP (HASH), OP (UIMM3), 0 } },
   2634     & ifmt_cmpri, { 0x48 }
   2635   },
   2636 /* cmpb $drb,$hash$uimm3 */
   2637   {
   2638     { 0, 0, 0, 0 },
   2639     { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (UIMM3), 0 } },
   2640     & ifmt_addbrhpag3, { 0x49 }
   2641   },
   2642 /* cmp $reg8,$hash$uimm16 */
   2643   {
   2644     { 0, 0, 0, 0 },
   2645     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
   2646     & ifmt_addrhpof, { 0x46 }
   2647   },
   2648 /* cmpb $regb8,$hash$uimm8 */
   2649   {
   2650     { 0, 0, 0, 0 },
   2651     { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (UIMM8), 0 } },
   2652     & ifmt_addrbhpof, { 0x47 }
   2653   },
   2654 /* cmp $dr,[$sr2] */
   2655   {
   2656     { 0, 0, 0, 0 },
   2657     { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), ']', 0 } },
   2658     & ifmt_add2, { 0x848 }
   2659   },
   2660 /* cmpb $drb,[$sr2] */
   2661   {
   2662     { 0, 0, 0, 0 },
   2663     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), ']', 0 } },
   2664     & ifmt_addb2, { 0x849 }
   2665   },
   2666 /* cmp $dr,[$sr2+] */
   2667   {
   2668     { 0, 0, 0, 0 },
   2669     { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), '+', ']', 0 } },
   2670     & ifmt_add2, { 0xc48 }
   2671   },
   2672 /* cmpb $drb,[$sr2+] */
   2673   {
   2674     { 0, 0, 0, 0 },
   2675     { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), '+', ']', 0 } },
   2676     & ifmt_addb2, { 0xc49 }
   2677   },
   2678 /* cmp $reg8,$pof$upof16 */
   2679   {
   2680     { 0, 0, 0, 0 },
   2681     { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
   2682     & ifmt_addrpof, { 0x42 }
   2683   },
   2684 /* cmpb $regb8,$pof$upof16 */
   2685   {
   2686     { 0, 0, 0, 0 },
   2687     { { MNEM, ' ', OP (REGB8), ',', OP (POF), OP (UPOF16), 0 } },
   2688     & ifmt_addbrpof, { 0x43 }
   2689   },
   2690 /* cmp $regmem8,$memgr8 */
   2691   {
   2692     { 0, 0, 0, 0 },
   2693     { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
   2694     & ifmt_addrm2, { 0x42 }
   2695   },
   2696 /* cmp $reg8,$memory */
   2697   {
   2698     { 0, 0, 0, 0 },
   2699     { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
   2700     & ifmt_addrm, { 0x42 }
   2701   },
   2702 /* cmpb $regbmem8,$memgr8 */
   2703   {
   2704     { 0, 0, 0, 0 },
   2705     { { MNEM, ' ', OP (REGBMEM8), ',', OP (MEMGR8), 0 } },
   2706     & ifmt_addbrm2, { 0x43 }
   2707   },
   2708 /* cmpb $regb8,$memory */
   2709   {
   2710     { 0, 0, 0, 0 },
   2711     { { MNEM, ' ', OP (REGB8), ',', OP (MEMORY), 0 } },
   2712     & ifmt_addbrm, { 0x43 }
   2713   },
   2714 /* cmpd1 $sr,$hash$uimm4 */
   2715   {
   2716     { 0, 0, 0, 0 },
   2717     { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM4), 0 } },
   2718     & ifmt_cmpd1ri, { 0xa0 }
   2719   },
   2720 /* cmpd2 $sr,$hash$uimm4 */
   2721   {
   2722     { 0, 0, 0, 0 },
   2723     { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM4), 0 } },
   2724     & ifmt_cmpd1ri, { 0xb0 }
   2725   },
   2726 /* cmpi1 $sr,$hash$uimm4 */
   2727   {
   2728     { 0, 0, 0, 0 },
   2729     { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM4), 0 } },
   2730     & ifmt_cmpd1ri, { 0x80 }
   2731   },
   2732 /* cmpi2 $sr,$hash$uimm4 */
   2733   {
   2734     { 0, 0, 0, 0 },
   2735     { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM4), 0 } },
   2736     & ifmt_cmpd1ri, { 0x90 }
   2737   },
   2738 /* cmpd1 $reg8,$hash$uimm16 */
   2739   {
   2740     { 0, 0, 0, 0 },
   2741     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
   2742     & ifmt_addrhpof, { 0xa6 }
   2743   },
   2744 /* cmpd2 $reg8,$hash$uimm16 */
   2745   {
   2746     { 0, 0, 0, 0 },
   2747     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
   2748     & ifmt_addrhpof, { 0xb6 }
   2749   },
   2750 /* cmpi1 $reg8,$hash$uimm16 */
   2751   {
   2752     { 0, 0, 0, 0 },
   2753     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
   2754     & ifmt_addrhpof, { 0x86 }
   2755   },
   2756 /* cmpi2 $reg8,$hash$uimm16 */
   2757   {
   2758     { 0, 0, 0, 0 },
   2759     { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
   2760     & ifmt_addrhpof, { 0x96 }
   2761   },
   2762 /* cmpd1 $reg8,$pof$upof16 */
   2763   {
   2764     { 0, 0, 0, 0 },
   2765     { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
   2766     & ifmt_addrpof, { 0xa2 }
   2767   },
   2768 /* cmpd2 $reg8,$pof$upof16 */
   2769   {
   2770     { 0, 0, 0, 0 },
   2771     { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
   2772     & ifmt_addrpof, { 0xb2 }
   2773   },
   2774 /* cmpi1 $reg8,$pof$upof16 */
   2775   {
   2776     { 0, 0, 0, 0 },
   2777     { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
   2778     & ifmt_addrpof, { 0x82 }
   2779   },
   2780 /* cmpi2 $reg8,$pof$upof16 */
   2781   {
   2782     { 0, 0, 0, 0 },
   2783     { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
   2784     & ifmt_addrpof, { 0x92 }
   2785   },
   2786 /* cmpd1 $regmem8,$memgr8 */
   2787   {
   2788     { 0, 0, 0, 0 },
   2789     { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
   2790     & ifmt_addrm2, { 0xa2 }
   2791   },
   2792 /* cmpd2 $regmem8,$memgr8 */
   2793   {
   2794     { 0, 0, 0, 0 },
   2795     { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
   2796     & ifmt_addrm2, { 0xb2 }
   2797   },
   2798 /* cmpi1 $regmem8,$memgr8 */
   2799   {
   2800     { 0, 0, 0, 0 },
   2801     { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
   2802     & ifmt_addrm2, { 0x82 }
   2803   },
   2804 /* cmpi2 $regmem8,$memgr8 */
   2805   {
   2806     { 0, 0, 0, 0 },
   2807     { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
   2808     & ifmt_addrm2, { 0x92 }
   2809   },
   2810 /* cmpd1 $reg8,$memory */
   2811   {
   2812     { 0, 0, 0, 0 },
   2813     { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
   2814     & ifmt_addrm, { 0xa2 }
   2815   },
   2816 /* cmpd2 $reg8,$memory */
   2817   {
   2818     { 0, 0, 0, 0 },
   2819     { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
   2820     & ifmt_addrm, { 0xb2 }
   2821   },
   2822 /* cmpi1 $reg8,$memory */
   2823   {
   2824     { 0, 0, 0, 0 },
   2825     { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
   2826     & ifmt_addrm, { 0x82 }
   2827   },
   2828 /* cmpi2 $reg8,$memory */
   2829   {
   2830     { 0, 0, 0, 0 },
   2831     { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
   2832     & ifmt_addrm, { 0x92 }
   2833   },
   2834 /* shl $dr,$sr */
   2835   {
   2836     { 0, 0, 0, 0 },
   2837     { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
   2838     & ifmt_addr, { 0x4c }
   2839   },
   2840 /* shr $dr,$sr */
   2841   {
   2842     { 0, 0, 0, 0 },
   2843     { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
   2844     & ifmt_addr, { 0x6c }
   2845   },
   2846 /* rol $dr,$sr */
   2847   {
   2848     { 0, 0, 0, 0 },
   2849     { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
   2850     & ifmt_addr, { 0xc }
   2851   },
   2852 /* ror $dr,$sr */
   2853   {
   2854     { 0, 0, 0, 0 },
   2855     { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
   2856     & ifmt_addr, { 0x2c }
   2857   },
   2858 /* ashr $dr,$sr */
   2859   {
   2860     { 0, 0, 0, 0 },
   2861     { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
   2862     & ifmt_addr, { 0xac }
   2863   },
   2864 /* shl $sr,$hash$uimm4 */
   2865   {
   2866     { 0, 0, 0, 0 },
   2867     { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM4), 0 } },
   2868     & ifmt_cmpd1ri, { 0x5c }
   2869   },
   2870 /* shr $sr,$hash$uimm4 */
   2871   {
   2872     { 0, 0, 0, 0 },
   2873     { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM4), 0 } },
   2874     & ifmt_cmpd1ri, { 0x7c }
   2875   },
   2876 /* rol $sr,$hash$uimm4 */
   2877   {
   2878     { 0, 0, 0, 0 },
   2879     { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM4), 0 } },
   2880     & ifmt_cmpd1ri, { 0x1c }
   2881   },
   2882 /* ror $sr,$hash$uimm4 */
   2883   {
   2884     { 0, 0, 0, 0 },
   2885     { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM4), 0 } },
   2886     & ifmt_cmpd1ri, { 0x3c }
   2887   },
   2888 /* ashr $sr,$hash$uimm4 */
   2889   {
   2890     { 0, 0, 0, 0 },
   2891     { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM4), 0 } },
   2892     & ifmt_cmpd1ri, { 0xbc }
   2893   },
   2894 };
   2895 
   2896 #undef A
   2897 #undef OPERAND
   2898 #undef MNEM
   2899 #undef OP
   2900 
   2901 /* Formats for ALIAS macro-insns.  */
   2902 
   2903 #define F(f) & xc16x_cgen_ifld_table[XC16X_##f]
   2904 #undef F
   2905 
   2906 /* Each non-simple macro entry points to an array of expansion possibilities.  */
   2907 
   2908 #define A(a) (1 << CGEN_INSN_##a)
   2909 #define OPERAND(op) XC16X_OPERAND_##op
   2910 #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
   2911 #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
   2912 
   2913 /* The macro instruction table.  */
   2914 
   2915 static const CGEN_IBASE xc16x_cgen_macro_insn_table[] =
   2916 {
   2917 };
   2918 
   2919 /* The macro instruction opcode table.  */
   2920 
   2921 static const CGEN_OPCODE xc16x_cgen_macro_insn_opcode_table[] =
   2922 {
   2923 };
   2924 
   2925 #undef A
   2926 #undef OPERAND
   2927 #undef MNEM
   2928 #undef OP
   2929 
   2930 #ifndef CGEN_ASM_HASH_P
   2931 #define CGEN_ASM_HASH_P(insn) 1
   2932 #endif
   2933 
   2934 #ifndef CGEN_DIS_HASH_P
   2935 #define CGEN_DIS_HASH_P(insn) 1
   2936 #endif
   2937 
   2938 /* Return non-zero if INSN is to be added to the hash table.
   2939    Targets are free to override CGEN_{ASM,DIS}_HASH_P in the .opc file.  */
   2940 
   2941 static int
   2942 asm_hash_insn_p (const CGEN_INSN *insn ATTRIBUTE_UNUSED)
   2943 {
   2944   return CGEN_ASM_HASH_P (insn);
   2945 }
   2946 
   2947 static int
   2948 dis_hash_insn_p (const CGEN_INSN *insn)
   2949 {
   2950   /* If building the hash table and the NO-DIS attribute is present,
   2951      ignore.  */
   2952   if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_NO_DIS))
   2953     return 0;
   2954   return CGEN_DIS_HASH_P (insn);
   2955 }
   2956 
   2957 #ifndef CGEN_ASM_HASH
   2958 #define CGEN_ASM_HASH_SIZE 127
   2959 #ifdef CGEN_MNEMONIC_OPERANDS
   2960 #define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE)
   2961 #else
   2962 #define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE) /*FIXME*/
   2963 #endif
   2964 #endif
   2965 
   2966 /* It doesn't make much sense to provide a default here,
   2967    but while this is under development we do.
   2968    BUFFER is a pointer to the bytes of the insn, target order.
   2969    VALUE is the first base_insn_bitsize bits as an int in host order.  */
   2970 
   2971 #ifndef CGEN_DIS_HASH
   2972 #define CGEN_DIS_HASH_SIZE 256
   2973 #define CGEN_DIS_HASH(buf, value) (*(unsigned char *) (buf))
   2974 #endif
   2975 
   2976 /* The result is the hash value of the insn.
   2977    Targets are free to override CGEN_{ASM,DIS}_HASH in the .opc file.  */
   2978 
   2979 static unsigned int
   2980 asm_hash_insn (const char *mnem)
   2981 {
   2982   return CGEN_ASM_HASH (mnem);
   2983 }
   2984 
   2985 /* BUF is a pointer to the bytes of the insn, target order.
   2986    VALUE is the first base_insn_bitsize bits as an int in host order.  */
   2987 
   2988 static unsigned int
   2989 dis_hash_insn (const char *buf ATTRIBUTE_UNUSED,
   2990 		     CGEN_INSN_INT value ATTRIBUTE_UNUSED)
   2991 {
   2992   return CGEN_DIS_HASH (buf, value);
   2993 }
   2994 
   2995 /* Set the recorded length of the insn in the CGEN_FIELDS struct.  */
   2996 
   2997 static void
   2998 set_fields_bitsize (CGEN_FIELDS *fields, int size)
   2999 {
   3000   CGEN_FIELDS_BITSIZE (fields) = size;
   3001 }
   3002 
   3003 /* Function to call before using the operand instance table.
   3004    This plugs the opcode entries and macro instructions into the cpu table.  */
   3005 
   3006 void
   3007 xc16x_cgen_init_opcode_table (CGEN_CPU_DESC cd)
   3008 {
   3009   int i;
   3010   int num_macros = (sizeof (xc16x_cgen_macro_insn_table) /
   3011 		    sizeof (xc16x_cgen_macro_insn_table[0]));
   3012   const CGEN_IBASE *ib = & xc16x_cgen_macro_insn_table[0];
   3013   const CGEN_OPCODE *oc = & xc16x_cgen_macro_insn_opcode_table[0];
   3014   CGEN_INSN *insns = xmalloc (num_macros * sizeof (CGEN_INSN));
   3015 
   3016   /* This test has been added to avoid a warning generated
   3017      if memset is called with a third argument of value zero.  */
   3018   if (num_macros >= 1)
   3019     memset (insns, 0, num_macros * sizeof (CGEN_INSN));
   3020   for (i = 0; i < num_macros; ++i)
   3021     {
   3022       insns[i].base = &ib[i];
   3023       insns[i].opcode = &oc[i];
   3024       xc16x_cgen_build_insn_regex (& insns[i]);
   3025     }
   3026   cd->macro_insn_table.init_entries = insns;
   3027   cd->macro_insn_table.entry_size = sizeof (CGEN_IBASE);
   3028   cd->macro_insn_table.num_init_entries = num_macros;
   3029 
   3030   oc = & xc16x_cgen_insn_opcode_table[0];
   3031   insns = (CGEN_INSN *) cd->insn_table.init_entries;
   3032   for (i = 0; i < MAX_INSNS; ++i)
   3033     {
   3034       insns[i].opcode = &oc[i];
   3035       xc16x_cgen_build_insn_regex (& insns[i]);
   3036     }
   3037 
   3038   cd->sizeof_fields = sizeof (CGEN_FIELDS);
   3039   cd->set_fields_bitsize = set_fields_bitsize;
   3040 
   3041   cd->asm_hash_p = asm_hash_insn_p;
   3042   cd->asm_hash = asm_hash_insn;
   3043   cd->asm_hash_size = CGEN_ASM_HASH_SIZE;
   3044 
   3045   cd->dis_hash_p = dis_hash_insn_p;
   3046   cd->dis_hash = dis_hash_insn;
   3047   cd->dis_hash_size = CGEN_DIS_HASH_SIZE;
   3048 }
   3049